(Sorry to break the thread, but mutt somehow managed to eat the message I'm replying to...)
Arie Peterson: > You could also use 'compositional functional references'. These are > introduced in the paper "A Functional Programming Technique for Forms in > Graphical User Interfaces" by Sander Evers, Peter Achten and Jan Kuper. > > === Introduction === > > There are two things one typically wants to do when working with a > substructure of some larger data structure: (1) extract the substructure; > and (2) change the larger structure by acting on the substructure. A 'Ref > cx t' encodes both of these functions (for a substructure of type 't' and > larger structure (context) of type 'cx'). > > > data Ref cx t > > = Ref > > { > > select :: cx -> t > > , update :: (t -> t) -> cx -> cx > > } ... > I've written a template haskell function to derive Refs from a data > > > structure definition > (with record syntax): given I've implemented this in Derive[1] in 12 minutes, counting the time required to re-familiarize with the code. The patch is at [2] and has also been darcs sent. [1] http://www-users.cs.york.ac.uk/~ndm/derive [2] http://members.cox.net/stefanor/derive-Ref-patch Stefan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe