Yes of course Haskell records do this, but these updates are not first class.
But this kind of fusion seems rather general. I haven't checked if the compiler already does it. On Sun, Sep 6, 2009 at 9:19 PM, Alberto G. Corona<[email protected]> wrote: > Use Haskell records: > > defaultWindowDescription= WindowDescription {title="", size=(0,0) ......} > > Many modifications can be fused in a single statement. for example: > > newWindowDescription= defaultWindowDescription{itle= "Haskell" ; size= > (640,480),background= Blue} > > > > 2009/9/6 Derek Elkins <[email protected]>: >> The first thing I would do i is verify that the compiler is not >> already doing this. >> >> On Sun, Sep 6, 2009 at 7:50 AM, Peter Verswyvelen<[email protected]> wrote: >>> I've seen a couple of package being announced that provide first class >>> labels, and other packages already existed for this (Grapefruit >>> Record, HList, Accessor, ...) >>> >>> Regarding this, I have a question about the performance of multiple >>> composed field updates. Maybe an example. >>> >>> Suppose I have a large record - say WindowDescription - which contains >>> a lot of fields. >>> >>> Suppose I have a couple of default window description values, e.g. >>> defaultWindowDesc, dialogBoxDesc, etc >>> >>> Using accessors it is easy to take such a default value, and "modify" >>> a couple of fields, like: >>> >>> let myWindowDesc = set title "Haskell" . set size (640,480) . set >>> background Blue . set fontFamily Arial $ defaultWindowDesc >>> >>> However, I guess this would make a lot of intermediate >>> WindowDescription copies no (whether the fields are strict or not)? So >>> ideally for performance, all these "updates" should be fused, maybe >>> running inside an ST monad? >>> >>> I'm not sure if any of this is valid, but I would like to understand >>> more about this, so any links and hints are welcome :-) >>> >>> Peter Verswyvelen >>> _______________________________________________ >>> Haskell-Cafe mailing list >>> [email protected] >>> http://www.haskell.org/mailman/listinfo/haskell-cafe >>> >> _______________________________________________ >> Haskell-Cafe mailing list >> [email protected] >> http://www.haskell.org/mailman/listinfo/haskell-cafe >> > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
