
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