Alexander,
In my post (excuses for my dyslexia) I try to demonstrate that the codomain (m a), from the point of view of C. Theory, can be seen as 'a' plus, optionally, some additional element, so a monadic morphism (a -> m a) is part of a endofunctor in (m a -> m a) When considering the concept of arrow from category theory, (not the concept of function), a point in the domain can "send" more than one arrow to the codomain, while a function do not. I think that this is the most interesting part of the interpretation, if I´m right. About this, I found this article revealing: http://cdsmith.wordpress.com/2012/04/18/why-do-monads-matter/ Therefore, codomains of (a -> m a) which are containers with multiple a elements can be considered as multi-arrow morphisms from 'a' to 'a' with the optional addition of some special elements that denote special conditions. For example (a -> [a]) May be considered as the general signature of the morphisms from the set 'a' to the set ('a' + []) So a monadic transformation (a -> [a]) can be considered as a point transformation of a endofunctor within the set (a + []). Alberto 2012/9/5 Alexander Solla <alex.so...@gmail.com>: > > > On Tue, Sep 4, 2012 at 4:21 PM, Alexander Solla <alex.so...@gmail.com> > wrote: >> >> >> >> On Tue, Sep 4, 2012 at 3:39 AM, Alberto G. Corona <agocor...@gmail.com> >> wrote: >>> >>> "Monads are monoids in the category of endofunctors" >>> >>> This Monoid instance for the endofunctors of the set of all elements >>> of (m a) typematch in Haskell with FlexibleInstances: >>> >>> instance Monad m => Monoid (a -> m a) where >>> mappend = (>=>) -- kleisly operator >>> mempty = return >> >> >> The objects of a Kliesli category for a monad m aren't endofunctors. You >> want something like: >> >> instance Monad m => Monoid (m a -> m (m a)) where ... >> >> /These/ are endofunctors, in virtue of join transforming an m (m a) into >> an (m a). > > > Actually, even these aren't endofunctors, for a similar reason that : you > "really" want something like > > instance Monad m => Monoid (m a -> m a) where > mempty = id > mappend = undefined -- exercise left to the reader > > (i.e., you want to do plumbing through the Eilenberg-Moore category for a > monad, instead of the Kliesli category for a monad -- my last message > exposes the kind of plumping you want, but not the right types.) _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe