A Second Look At Polymorphic Records

Martin Sulzmann

In the last few years with have seen several proposals for adding records to functional languages like ML or Haskell. We examine the relationship between several proposals by Ohori, Remy and Gaster/Jones. They introduce polymorphic records with a powerful set of operations like record selection, record update or record extension. Records are polymorphic due to the absence of the subsumption rule in the type system. We use the HM(X) system to study these different approaches under one common framework. We will point out some shortcomings and show how HM(X) helps to improve previous approaches. As a new application we present an instance of the HM(X) framework that deals with polymorphic field labels. There is only one record system (Gaster/Jones) which also supports polymorphic field labels. We point out some suble problems which are present in their system. Again, we show how HM(X) helps to understand and improve their system.