
Everyone in the Haskell cafe probably has a secret dream to give the best "five minute monad talk." Challenge: get someone to have a competition at one of the conferences where students all give their best "five minute monad talk" and try to find the most comprehensible one!
Haha, maybe that's why I'm writing. Agree on all points, not just this quotation. Yeah, IO and Maybe are the first monads most new Haskell programmers encounter. Perhaps a tour of RVars or the accelerate library would give a better impression. I bet a lot of students get the concept of pure functional programming, and if you shock them with: "So how would you implement a PRNG?", they would understand the role monads play. Given that Maybe and Either don't modify state, nor do they communicate with outside interfaces, nor do they specify computation ordering, I don't understand why they're implemented as monads. Why not a primitive typeclass or even datatype declaration?