| I think most people would need to write some code to really grok it, I would anyway. It's a simple enough idea in context, but there's no royal road to understanding. The explanations I know of (all from the Haskell community) are either 1) formal, referring to ideas from category theory, 2) metaphorical, conveying the ideas by intuitions you may already have about burritos or whatever, or 3) pragmatic, focused on how and why you use them in code. I think this last category, pioneered by byorgey's wonderful TypeClassopedia [1], is by far the most useful in teaching people about monads but it depends on observing them yourself. (Ditching the metaphors actually seemed quite radical to me at the time -- I presumed they were necessary because everyone else did.) It builds up from understanding what a Functor is, then the next abstraction up, and so on until Monads seem like an obvious idea. The same approach is used in Learn You a Haskell for Great Good [2] but you need to doing the exercises to follow the book. sigfpe's classic explanation [3] is also by example and goes into a bit more depth. It still contains exercises for the reader though :) [1] https://wiki.haskell.org/Typeclassopedia [2] http://learnyouahaskell.com/functors-applicative-functors-an... [3] http://blog.sigfpe.com/2006/08/you-could-have-invented-monad... |