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