Moreover, `m a` is 'a' plus some terminal element , for example Nothing, [], Left _ etc, So a morphism (a -> m a) contains all the morphisms of (m a -> m a).
2012/9/5 Alberto G. Corona <agocor...@gmail.com>: > 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