Monads are like fight club. The first rule of monads is don't blog about monads.
Kind of a design pattern for functional programming, monads are already the subject of more than enough well intentioned but confusing tutorials. We'll not commit the monad tutorial fallacy here. But, monads are needed for a couple of the labs from FP101x, an online class in Haskell - labs with a throw-'em-into-the-deep-end quality to them.
Here's a quick list of some of the better resources I found, while struggling to get a handle on these super-abstract objects of mystery.
Starting points
- Functors, Applicatives, And Monads In Pictures, by Aditya Bhargava, is a friendly place to start.
- Brian Beckman: Don't fear the Monad
- FPComplete's School of Haskell explains what monads are and why to use them.
Phillip Wadler
It's been said that "Monads are hard because there are so many bad monad tutorials getting in the way of finally finding Wadler’s nice paper." Find it here:
Need more?
Those got me over the first hump, but here are some I may want to come back to later:
- You Could Have Invented Monads! (And Maybe You Already Have)
- Monads for the Curious Programmer by Bartosz Milewski who used to be in Black Sabbath. See also Milewki's easiest way to understand Monads.
- Monads and Gonads a Google Tech-Talk by Douglas Crockford
- Is There Anything Left to Say about Monads?
- Monads in small bites
- Monads for Dummies
- What are monads and why are they useful?
To put monads in a more general context, here's a really great guide to Getting started with Haskell.