(Apologies for previous incomplete post: Here's the whole thing)
One thing that bugs me about the named record syntax, is that with a datatype: data T = T { t_f1 :: X, t_f2 :: X }; the function t_f1 has the type of an "accessor", ie t_f1 :: T -> X but there doesn't any tidy way to get at the "mutator" function t_f1' :: X -> T -> T without actually having to write the following t_f1' x t = t{t_f1=x} or is there? Actually mutators of the more general form t_f1' :: (X->X) -> T -> T t_f1' f t = t{t_f1=f (t_f1 t)} would seem to be quite useful, (even though they are tedious to write) as you can compose them for nested structures, ie if data X = X { x_f1 :: Int, x_f2 :: Int }; Then... (t_f1'.x_f2') (const 5) would be the functional equivalent of the imperative t.f1.f2 = 5 Tim _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell