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
[EMAIL PROTECTED]
"It is foolish to answer a question that
you do not understand."
--G. Polya ("How to Solve It")
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell