A possible alternative to dot notation for record access
Ben Franksen
ben.franksen at online.de
Mon Jul 1 03:22:55 CEST 2013
Judah Jacobson wrote:
> I had a quick idea about record field syntax as specified in the GSoC
> project plan:
>
http://hackage.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/Plan
> .
>
> Instead of "f.x" (to access field x of record f), maybe we could write
> "f{x}" as the record selection. That is, we'd reuse the brace notation
> which is already in place for record updates. Unlike dot notation, this
is
> unambiguous and doesn't conflict with any existing syntax (AFAIK). It
> would also generalize to "f{x}{y}{z}" instead of "f.x.y.z".
>
> This proposal would add two new forms of expressions:
>
> f{x} to access field x of data f
> ({x}) = \f -> f{x} as a field access section
>
> Additionally, it seems like record mutation expressions could also have
> sections:
>
> ({x=2}) = \f -> f{x=2}
>
> That actually seems useful by itself, regardless of whether we use dot
> notation for field access.
I think this is a pretty nice idea. (Disclaimer: I haven't spent any time on
checking corner cases; also I firmly belong to the anti-further-overloading-
of-dot faction). In any case it is light-weight enough to be actually
useful, it is readable and suggestive, and (at least conceptually) fits well
in the existing record syntax.
This deserves a fully fleshed-out proposal for Haskell' IMO.
Cheers
--
Ben Franksen
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - against proprietary attachm€nts
More information about the Glasgow-haskell-users
mailing list