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 at haskell.org>>http://www.haskell.org/mailman/listinfo/haskell-cafe>>