What I Wish I Knew When Learning Haskell
Would someone please explain what a monad is and why they're useful, in down-to-Earth, simple language that an engineer can appreciate?<p>I know (and use) basically every other CS concept.  Monads, though, I've never bothered looking into, because it seems like everyone who talks about them can't resist the urge to use flowery descriptions of their possibilities, rather than examples of their pragmatism.<p>Also, it's suspicious that pg has never once mentioned monads: <a href="https://www.google.com/search?q=site%3Apaulgraham.com%20%22monad%22" rel="nofollow">https://www.google.com/search?q=site%3Apaulgraham.com%20%22m...</a><p>If they're useful, you'd think one of the best hackers would have said something about it.  He spent a good deal of his career talking about closures, types, objects, functions, computing theory, lambda calculus, etc.  But no monads.<p>So, are they useful?  Would anyone please give examples of their usefulness?<p>EDIT:  You know what's worse than hero worship?  Not being able to make a reasonable argument which uses someone as an example without being accused of hero worship.