
I'm not exactly a Haskell beginner but haven't grasped much of it yet. I
have a feeling the answer to your question has something to do with the
fact that the monad transformer library provides instances that allow the
use of, for example, "get" and "put" in any transformed monad that has a
StateT somewhere in it. Or throwError in anything that has an ErrorT in it.
In other words, you don't need to lift everything into the right level.
Okay, that's a crude way of putting it, but someone will probably come
along and clarify.
Dennis
On Sat, Aug 25, 2012 at 1:15 AM, Song Zhang
When I use a State Monad transformer to combine with a Writer Monad StateT s (Writer w) a. is it different from composition of State Monad and Writer Monad. It is State s (Writer w a) ? StateT is defined as (s -> m (a, s)), so StateT s (Writer w) a can be regarded as (s -> Writer w a) , which is (s -> ((a,w),s) and on the other hand State s (Writer w a) is (s -> ((a,w),s). I suppose the are similar and if so, what is the point we still get Monad transformers? Thanks
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners