Revision as of 14:15, 16 November 2011

This timeline covers not just monad tutorials, but interesting events in monad tutorial history. Please update this list! Don't worry about getting dates, authors, blurbs unless you really want to. We can fix it later.

Older tutorials are especially interesting.

Contents

1 before 2000

"Shall I be pure or impure?" One of the earliest papers on monads by the man hiself. Has been called the "ne plus ultra of approachable, useful introductions to monads". It's pretty hefty (31 pages), which is a good thing!

Written when 'what is a monad' started becoming an FAQ. Very short and sweet, advertised as more examples than theory. "Once upon a time, people wrote their Haskell programs by sequencing together operations in an ad-hoc way."

"Writing introductions to monads seems to have developed into an industry," Dan (sigfpe) observes. He argues that monads are not "something esoteric in need of explanation", but walks you through the process of reinventing monads to solve some very basic and practical problems.

Monad transformers are rarely covered in introductory tutorials. This "is not a paper about implementing transformers, but about using them to write elegant, clean and powerful programs in Haskell". Available as a 12 page PDF or .lhs file.

Author's Description: This crash course starts with an EASY! introduction to categories and functors, then we define a monad, then give some basic examples of monads in categories, then present monadic terminology as used in programming languages.

Csgordon reports that monad tutorials tend to "get horribly botched" and says "[they] either bored me to tears, struck me as completely inane, or simply confused me". He uncovers the early Phil Wadler's paper, Monads for Functional Programming, which not only gives a clear explanation but provides non-trivial motivating examples

10 year 2010

An example showing how a simple Java class is translated into a stack of monad transformers, with a metaphor about how monads are like conversations, and why this idea should be familiar to OO programmers.