On 16 Jan 2009, at 01:10, Dan Weston wrote:

Maybe you can explain that again?

Sure.

Consider the following setting: a category C and a bifunctor T : C x C -> C, which is associative and have a (left and right) unit I. This is what is called "monoidal category".

A "monoid" is an object X in C with two morphisms: I -> X and T(X, X) - > X, satisfying two relatively simple conditions (I don't want to draw commutative diagrams).

If your category is a category of sets, and T is a cartesian product, then you have ordinary monoids (I is a one-element set, first morphism is a unit of a monoid, and second morphism is monoid multiplication).

If, however, you category is a category of endofunctors of some category D (that is, functors D -> D), and T is composition, then our "monoids" become monads on D: I is an identity functor, first morphism is "return", and second one is "join".



I see how the subset of Kleisli arrows (a -> m a) forms a monoid (a, return . id, >>=), but what to do with (a -> m b)? (>>=) is not closed under this larger set.

Dan

Miguel Mitrofanov wrote:
Notice that "monoid" sounds almost *exactly* like "monad". And yet, what you use them for is wildly unrelated.
Well, monads are monoids. I remember explaining you that...
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to