
27 Jan
2009
27 Jan
'09
9:17 a.m.
Hi Cristiano,
Mmmmhhh... this seems the signature of the liftM function, whose purpose is to make a function operate on monadic values instead of pure values. Notice that this is different from the "lift" function you described above. A computation is a monadic value (i.e. an object of the type "Monad m => m a") and the "lift" function wraps that value into a monad transformer, making it a new monadic value (i.e. an object of the type "MonadTrans t, Monad m => t m a"). Thanks for clarifying. I don't have my terminology straight yet I guess :-)
Can you fix the issues? Gr. Matthijs