[Haskell-cafe] Re: monads and groups -- instead of loops

Wouter Swierstra wss at cs.nott.ac.uk
Thu Aug 2 05:08:04 EDT 2007

On 1 Aug 2007, at 21:23, Greg Meredith wrote:
> But, along these lines i have been wondering for a while... the  
> monad laws present an alternative categorification of monoid. At  
> least it's alternative to monoidoid. In the spirit of this thought,  
> does anyone know of an expansion of the monad axioms to include an  
> inverse action? Here, i am following an analogy
> monoidoid : monad :: groupoid : ???

I'm not sure that's the right question.

A monoid is a category with one object.

A group is a category with one object, where every arrow is an iso.

A groupoid is a category (with potentially more than one object),  
where every arrow is an iso.

A monad is monoid in the category of endofunctors.

Your "groupad", i.e. a group in the category of endofunctors, would  
boil down to having a monad m that has an unreturn :: m a -> a. In  
the light of things like unsafePerformIO, this is maybe not what you  

More interesting, however, is generalizing a monad to a monoid in  
functor categories in general, as opposed to just endofunctors. You  
could call this a "monadoid". I've heard Tarmo Uustalu talk about  
this once (Kan-extensions, coends, *mumble mumble mumble*). Mike  
Spivey's MSFP paper (http://spivey.oriel.ox.ac.uk/mike/msfp.pdf)  
mentions A-monads, which is a step in that direction.

Anyhow, just a thought.


More information about the Haskell-Cafe mailing list