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.