Hi all,

I have amended the plan [1] as a result of the ongoing discussion,
including leaving the syntax alone for the time being, so record
projections are written prefix.

Regarding Barney's suggestion of field declarations:

On 01/07/13 10:50, Barney Hilken wrote:
> All this extra syntax, whether it's ., #, or {} seems very heavy for a 
> problem described as very rare.
> Why not simply use a declaration
> 
>       field name
> 
> whose effect is to declare 
> 
>       name :: r {name ::t} => r -> t
>       name = getFld
> 
> unless name is already in scope as a field name, in which case the 
> declaration does nothing?

This makes sense. I guess the question is whether a new declaration form
is justified. The implementation is slightly more subtle than you
suggest, because we don't know whether `name` will be brought into scope
as a field later, in which case the definition would clash with the
actual field. It should be equivalent to defining

data Unused { name :: () }
data Unused2 { name :: () }

(twice so that there is always ambiguity about a use of `name`).

Adam

[1]
http://hackage.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/Plan



_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to