On 3/15/07, Steve Downey <sdowney@gmail.com> wrote:
EOk, i'm trying to write down, not another monad tutorial, because I
don't know that much yet, but an explication of my current
understanding of monads.
But before I write down something that is just flat worng, I thought
I'd get a cross check. (and I can't get to #haskell)
Monads are Functors. Functors are projections from one category to
another such that structure is preserved. One example I have in mind
is the embedding of the natural numbers into the real numbers. The
mapping is so good, that we don't flinch at saying 1 == 1.0.
Monads are endofunctors (functors from one category to itself). This is easy to see from the type of join:
join : m (m a) -> m a
For Haskell monads the category is the category of Haskell types and
Haskell functions. In this category N and R are objects, so you'll get
the wrong idea trying to see them as categories.
/ Ulf