Introduction The most common complaint I hear from students of Haskell is that monads are hard to comprehend. This is a problem, because monads are as fundamental to modern Haskell as procedures are to C, or classes to Ruby. I believe that persistent failure to understand monads is not due to the subject matter, but to the manner in which it is taught. Monads are derived from a mathematics known a