
On 7/2/07, Andrew Coppin
What were monads like before they became a Haskell language construct?
Is Haskell's idea of a "monad" actually anywhere close to the original mathematical formalism?
It's as close to a mathematician's notion of a monad as Haskell's types and functions are to the objects and arrows of category theory. They are essentially the same thing. Using the notation here: http://en.wikipedia.org/wiki/Monad_%28category_theory%29 'return' is eta and join is mu. If you're more familiar with >>= than join, then its definition is
join x = x >>= id
and I'll leave recovering >>= from join as a nice exercise. Knowing that you were about to ask this question I told my past self by tachyon express and wrote up on it this weekend: http://sigfpe.blogspot.com/2007/06/monads-from-algebra-and-the-gray-code.htm... -- Dan