> class MonadState s m | m -> s where > ... > state :: (s -> (a,s)) -> m a > state f = do s <- get > let (a,s') = f s > set s' > return a >I am 100% behind this change. It has been on the short list of changes that I want to make to mtl.
> class MonadState s m | m -> s where > ... > state :: (s -> (a,s)) -> m a > state f = do s <- get > let (a,s') = f s > set s' > return a >