What is a monad in FP, in categorical terms?

This question has some good answers: Monads as adjunctions

More to the point, Derek Elkins’ “Calculating Monads with Category Theory” article in TMR #13 should have the sort of constructions you’re looking for: http://www.haskell.org/wikiupload/8/85/TMR-Issue13.pdf

Finally, and perhaps this is really the closest to what you’re looking for, you can go straight to the source and look at Moggi’s seminal papers on the topic from 1988-91: http://www.disi.unige.it/person/MoggiE/publications.html

See in particular “Notions of computation and monads”.


My own I’m sure too condensed/imprecise take:

Begin with a category Hask whose objects are Haskell types, and whose morphisms are functions. Functions are also objects in Hask, as are products. So Hask is Cartesian closed. Now introduce an arrow mapping every object in Hask to MHask which is a subset of the objects in Hask. Unit!
Next introduce an arrow mapping every arrow on Hask to an arrow on MHask. This gives us map, and makes MHask a covariant endofunctor. Now introduce an arrow mapping every object in MHask which is generated from an object in MHask (via unit) to the object in MHask which generates it. Join! And from the that, MHask is a monad (and a monoidal endofunctor to be more precise).

I’m sure there is a reason why the above is deficient, which is why I’d really direct you, if you’re looking for formalism, to the Moggi papers in particular.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)