On Wed, 2009-03-25 at 15:09 +0000, Simon Marlow wrote: > the ordering that the state monad expects > (and I can never remember which way around they are in Control.Monad.State).
Really? I found it obvious once I figured out it how simple it made (>>=). With the order from Control.Monad.State (with constructors ignored): a >>= f = \ s -> case s a of (x, s') -> f x s' Reversing the order of the components of the result gives you a >>= f = \ s -> case s a of (s', x) -> f x s' which just looks weird. > Try doing it with mapAccumL, which is arguably the right abstraction, > but > has the components the other way around. Define swap (a, b) = (b, a) You'll never worry about the order of components of a pair again. This function is as indispensable as flip. jcc _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe