Records in Haskell
AntC
anthony_clayden at clear.net.nz
Fri Mar 9 05:49:37 CET 2012
>
> On Fri, Mar 02, 2012 at 01:04:13AM +0000, AntC wrote:
> >
> > Let me explain better what I mean by "two private namespaces", then we'll
> > try to understand how your proposal goes ...
>
Folks, it has been very difficult keeping up with all the twists and turns of
this thread.
So here's a summary of my proposal, by popular demand,
http://hackage.haskell.org/trac/ghc/wiki/Records/DeclaredOverloadedRecordFields
#ThumbnailSketch
Reminder about this approach:
* It requires no new semantics from Haskell (beyond ghc v7.2 extensions).
* Therefore a prototype can be developed,
and it has! you can download and see for yourself.
* The syntax for record updates is the same as it is today.
(Although the semantics is polymorphic, not monomorphic.)
* The syntax for data declarations is the same as it is today.
* The syntax for field selection is the same as it is today.
(But polymorphic for any record with a field of that name.)
* There is a dot notation syntax possible for field selection,
(strictly optional, sugar only).
* It does support type-changing update to records,
for parametric polymorphic fields and records.
But:
* This approach does not have a solution for updating fields of
higher-rank types.
(In that respect it is like SORF. This is the remaining problem.
And I suspect that any solution for SORF will equally work for DORF.)
There were some criticisms about how much boilerplate this approach would
need. There are some ideas/suggestions to improve that. In particular
see "Option Three: Mixed In-situ and Declared ORF" further down the page from
the Thumbnail Sketch.
Constructive feedback welcome.
AntC
More information about the Glasgow-haskell-users
mailing list