deep record update

Edward Kmett ekmett at gmail.com
Mon Sep 19 20:58:28 CEST 2011


If you use lenses you can do this today with no real need to adulterate the
parser.

setL (l2 . l1) x rec

This goes one step further as it can be written point free so you don't even
have to give rec a name if you don't want to. ;)

-Edward

On Mon, Sep 19, 2011 at 9:09 AM, Barney Hilken <b.hilken at ntlworld.com>wrote:

> All this talk about records got me thinking. I don't really like the
> current syntax for record update (because it looks too much like function
> application) but here is an extension to it which might be useful.
>
> If you use nested records, many languages allow you to update the inner
> records directly, for example rect.bottomLeft.xCoord += 3. We could allow a
> similar thing in Haskell by extending the syntax like this:
>
> fbind   ->      qvar = exp
>                |       qvar { fbind1 , ... , fbindn }
>
> then
>
>        rec { l1 { l2 = x }}
>
> would mean
>
>        rec { l1 = (l1 rec) { l2 = x }}
>
> The advantage (apart from convenience) is that we don't have to repeat rec,
> which could be a complex expression.
>
> Is this any use?
>
> Barney.
>
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20110919/a3f29412/attachment.htm>


More information about the Glasgow-haskell-users mailing list