[Haskell] Monads vs. continuations

Gregory Woodhouse gregory.woodhouse at sbcglobal.net
Mon Oct 31 14:05:26 EST 2005

On Oct 31, 2005, at 3:02 AM, Cale Gibbard wrote:

> Perhaps you're referring to a monoid. Since you seem to have some
> familiarity with category theory, check out
> http://en.wikipedia.org/wiki/Monad_%28category_theory%29 for a formal
> definition of monads and some background. Translating between
> notation, μ = join and η = return in Haskell. The application of the
> functor T to functions is called fmap, or liftM, which should always
> be equivalent.
> The functor behind a monad is always an endofunctor, that is, from the
> category to itself. In this case, you'll be interested in the category
> of Haskell types and Haskell-definable functions between them.

This was actually quite helpful. If someone had told me that a monad  
was a functor in the first place, this would all have been much less  
mysterious. (BTW, I have indeed encountered adjoint functors, Hom and  
Tensor, in the context of algebraic topology, so the article did  
leave me with a bit more of a sense of having my feet on the ground.)

> For a much gentler description and one way in which monads relate to
> programming, check out
> http://www.haskell.org/hawiki/MonadsAsContainers which is an article
> that I wrote.

This is an excellent article! I found it extremely useful and lucid.  
To be sure, it's going to take a bit more time to let all these ideas  
sink in, but I liked the approach of focusing on fmap and join (>>=  
always seemed mysterious). Believe it or not, though I've read that  
lists are monads, this is perhaps the first time I've seen it spelled  
out just how.

Gregory Woodhouse
gregory.woodhouse at sbcglobal.net

"It is foolish to answer a question that
you do not understand."
--G. Polya ("How to Solve It")

More information about the Haskell mailing list