[Haskell-beginners] in which monad am I?

Francesco Guerrieri f.guerrieri at gmail.com
Sun Jan 3 16:38:28 EST 2010

Hello, this is my first post to the list.

I am learning Haskell and I think I understand monads (well, that
doesn't mean that I actually understand them :-) )
Nevertheless, I would like to check something with you.
My question is: how do you know in which monad you are computing at a
given time?
What I mean is that, when dealing with more than a monad at the same
time (Maybe, List, IO come to my mind) if I understand correctly you
have to lift values back and forth from a monad to the other. How do
you "keep" track of the monad you are in a given time? I think that
the type system will help to resolve to the relevant function (eg,
thinking to liftM signature, liftM   :: (Monad m) => (a1 -> r) -> m a1
-> m r

But doesn't ever happen that poor liftM be confused? and do poor
haskell programmers never feel the need to explicitly state to which
monad they "wish to lift" ?

I hope it's not a too  silly question. If so, please point me to the
relevant resouces (Are  monad transformers relevant to my issue?)

Thanks in advance,

More information about the Beginners mailing list