The Future of Haskell discussion at the Haskell Workshop

Tom Pledger Tom.Pledger@peace.com
Wed, 10 Sep 2003 12:48:48 +1200


Hi.

Here's another opinion for the "Records! Records!" chorus:

  - The record and module system is one of the two big things I'd like
    to see changed in Haskell.  (OT: the other is subtyping.)

  - It shouldn't happen before Haskell 2, because of backward
    compatability.  (The dot operator for function composition is
    widely used, but is the obvious choice for record projection.)

  - The way to get a feature into Haskell 2 begins with contributing
    it as an optional extension to GHC and/or nhc98 and/or Hugs.

  - I'd like something similar to Cayenne's record system, which
    combines records, modules and let-expressions.  But with these
    refinements:

      * Dot notation for record opening.  Instead of Cayenne's

            open rec_expr in expr

        allow

            (rec_expr).(expr)

        which has the familiar single-field projection as a special
        case

            (rec_expr).field_name

      * Some sort of catenation or merge facility.  Speaking of
        which...

Iavor Diatchki writes:
 :
 | incidently i gathered that people wanted reocrds that support record 
 | concatenation, does anyone have any examples of what that might be used for?

When a module imports and reexports some other modules, it is
effectively doing record catenation.  (It may add a few fields of its
own, if it exports any declarations, but that can be handled by record
extension as opposed to catenation.)

The (relational database) join operator also needs it - if you're into
doing such things in Haskell.



I've implemented a language with a record system along the lines I've
just described.  It's part of my work, but the record system isn't
commercially sensitive.  If it pans out well, I'll look into
contributing it to a Haskell implementation.  (O'Hugs may well be the
best fit.)

- Tom