Talk:Monad
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
About some of that "Functor/Applicative/Monad" business, a little equivalence formula that's worked well for me goes like so:
ap (return f) x == (return . f) =<< x == liftM f x == fmap f x
Just to refresh, (=<<) is the reversed bind. Also, 'ap' is the Monad version of the applicative operator, (<*>) - see the Control.Applicative module for more help.
Usually, I stay away from using liftM, since it's identical to fmap, only confined t Monads, as 'ap' is to (<*>). However, the other liftMn functions are a nice generalization of the zipWithn family to Monads. The benefits of that, I'll leave for another discussion.
BMeph 04:30, 11 March 2008 (UTC)