updating labelled fields
Zdenek Dvorak
rakdver@hotmail.com
Tue, 07 May 2002 20:07:22 +0000
Hello.
>DrIFT which i am now maintaining can derive such utility functions out
>of the box. just add a {-!deriving: update -} to get update functions
>for every labeled field in a datatype. quite useful, I have not updated
>the web page yet, but the new DrIFT homepage will be at
>
>http://homer.netmar.com/~john/computer/haskell/DrIFT/
Nothing against DrIFT, but it requieres running preprocessing before real
compilation; I don't like it for short programs, that I have defined just in
one module and I'm debugging/modificating them.
I've thought about syntax for set/update functions some time ago too.
What I though about is:
({assignments}) desugars to \x->x{assignments}
x{as, field =, bs} desugars to \y->x{as, field = y, bs}
x{as, field, bs} desugars to \f->x{as, field = f (field x), bs}
Then set function would be just ({field =}) and apply ({field})
(it does not need to create some artificial names for them that could
colide with user names).
Not really sure it does not conflict with rest of syntax, though.
Zdenek Dvorak
> > Anyway I'd prefer to have some way to 'derive' apply and set functions.
> > Something like
> > > data MyData = MyData { foo :: fooType, bar :: ..., .... }
> > > deriving (Set, Apply)
> >
> > Using the keyword "deriving" would probably be a bad idea though :)
> > The set and apply functions could be derived with a standard postfix or
>maybe
> > prefix... fooAp or apFoo.
> > Maybe we could introduce sintax to specify it...
> > > deriving (Set with "set", Apply with "ap")
> >
> > I don't know... I'm just brainstorming right now.
> > Having actual functions is important. I don't think I have to explain
>why to
> > people in this mailing list :-)
> >
> > > Anyway, does such a thing exist, and, if not, is there any chance it
>could
> > > exist, or is it just syntactic salt to too many people? :)
> > I whish you better luck than I've had so far whenever making posts about
>this
> > same issue ;)
_________________________________________________________________
MSN Photos is the easiest way to share and print your photos:
http://photos.msn.com/support/worldwide.aspx