deep record update

Julian Bean jules at jellybean.co.uk
Tue Sep 20 12:23:24 CEST 2011


This is (a) one of the big advantages of records and (b) why it's a mistake to have the record discussion without taking into account some notion of lens. Haskell field names are a red herring because they're selector functions - what we need is a record system which generates lenses and solves the namespacing issues.

Jules

On 19 Sep 2011, at 19:58, Edward Kmett wrote:

> 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
> 
> _______________________________________________
> 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/20110920/55e32687/attachment.htm>


More information about the Glasgow-haskell-users mailing list