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