Records in Haskell

wren ng thornton wren at freegeek.org
Mon Jan 9 07:15:11 CET 2012


On 12/30/11 10:58 PM, Matthew Farkas-Dyck wrote:
> On 30/12/2011, Andriy Polischuk<quuxity at gmail.com>  wrote:
>> Consider this example:
>> quux (y . (foo>.<  bar).baz (f . g)) moo
>> It's not that easy to distinguish from
>> quux (y . (foo>.<  bar) . baz (f . g)) moo
>
> Yeah, that's why I dislike dot as compose operator (^_~)

Me too. Though I've been told repeatedly that we're in the losing camp :(

Given that we want to apply selectors to entire expressions, it seems 
more sensible to consider the selector syntax to be a prefix onto the 
selector name. Thus, the selector would be named ".baz" (or ":baz", 
"#baz", "@baz",...), and conversely any name beginning with the special 
character would be known to be a selector. Therefore, a space preceding 
the special character would be optional, while spaces following the 
special character are forbidden. This has a nice analogy to the use of 
":" as a capital letter for symbolic names: function names beginning 
with the special character for record selectors just indicate that they 
are postfix functions with some mechanism to handle overloading (whether 
that be TDNR or whathaveyou).

-- 
Live well,
~wren



More information about the Glasgow-haskell-users mailing list