Monad tutorials timeline
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.
The existence of this page also indicates that a observation made by one of the tutorial authors is actually correct:
- ...it seems like every programmer who gets monads posts a tutorial about them. (And each post begins with: There’s already a lot of monad tutorials on the Internet, but...) The reason is that getting monads it’s like a spiritual experience that you want to share with others. (Bartosz Milewski)
1 before 2000
- 1992-08 Monads for Functional Programming - Phil Wadler
- "Shall I be pure or impure?" One of the earliest papers on monads by the man himself. Has been called the "ne plus ultra of approachable, useful introductions to monads". It's pretty hefty (31 pages), which is a good thing!
- 1995-05 Monadic IO in Haskell 1.3, Andrew D. Gordon and Kevin Hammond.
- 1999-02 What the hell are Monads? Noel Winstanley
- 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."
- 1999-Spring Monads for the working Haskell Programmer - Theodore S. Norvell
- One of the original tutorials, originally written for Gofer and eventually "updated for Haskell98"
2 year 2002
- 2002 Yet Another Haskell Tutorial (Chapter: Monads) - Hal Daumé III
3 year 2003
- 2003-08 All about Monads - Jeff Newbern
- A comprehensive introduction to monads, covering also "advanced" topics like monad transformers and use of some common monads. There is an appendix which presents monads as assembly lines.
4 year 2004
- 2004-07 A Schemer's Introduction to Monads
- "This will be an introduction to monads from a Lisp/Scheme perspective, with the assumption that the reader is comfortable with continuations, CPS, accumulators, and accumulator-passing style."
- 2004-07 Monads as Containers - Cale Gibbard
- Presents monads as boxes. Uses andfmap. "If you will give me a blueberry for each apple I give youjoin, and I have a box of apples(a -> b), then I can get a box of blueberries(f a)."(f b)
- Presents monads as boxes. Uses
- 2004-08 Monads in Perl - Greg Buchholz
- Written in the spirit of TMTOWTDI
5 year 2005
- 2005-07 Monads in Ruby - MenTaLguY
- Presents monads in a friendly language, starting from Identity and building on up
- 2005-11 Of monads and space suits - Eric Kow
6 year 2006
- 2006-03 Understanding Monads - Eric Kow
- 2006-07 The Monadic Way - Andrea Rossato
- 2006-08 You could have invented monads! (and maybe you already have) - Dan Piponi
- 2006-09 Meet Bob The Monadic Lover - Andrea Rossato
- Bob embarks upon a series of romantic conquests... bind bind bind, Paula, Luisa, Antonia
- 2006-10 Monad Transformers Step by Step - Martin Grabmüller
- 2006-11 There's a Monster in my Haskell! Andrew Pimlott
- 2006-12 Maybe Monad in Java - Tony Morris
- Monads can also be useful in Java!
7 year 2007
- 2007-01 Think of a monad - Don Stewart (reposted on Eric Kow's blog)
- 2007-02 Understanding Monads. For Real - Karsten Wagner
- A monad is like a macro
- 2007-02 Crash Course in Monads Monads for Mathematicians
- Then I lie down in a dark room with a warm wet cloth over my eyes.
- 2007-04 The Real Monad Transformer - Henning Thielemann
- Not a tutorial either, but an important aid in demystifying monads
- 2007-03 Monads in 15 Minutes - Eric Kidd
- Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses , which seems quite rare for monad tutorials (cf Cale's Monads as containers)join
- Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses
- 2007-07 Monads! (and why monad tutorials are all awful) - Colin Gordon?
- 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
- 2007-08 Monads as computation - Cale Gibbard
- 2007-08 Understanding Monads (2) - Apfelmus
- 2007-08 Monad (sans metaphors) - Claus Reinke
- 2007-11 How to do IO in Haskell - Toby Goodwin
8 year 2008
- 2008-06 Monads (in Russian) and Monads (in English) - Yet another monad tutorial, by Eugene Kirpichov; fairly advanced but skips monad transformers. Oriented towards a broader understanding of monads than just IO and Maybe.
- Monads, Chapter 14 of "Real World Haskell".
9 year 2009
- 2009-01 Abstraction, intuition, and the “monad tutorial fallacy” Not a monad tutorial itself, but a comment on monad tutorials and why many of them are so unhelpful.
- 2009-03 A Monad Tutorial for Clojure Programmers An interesting perspective on monads .
- 2009-11 What a Monad is not A desperate attempt to end the eternal chain of monad tutorials
10 year 2010
- 2010-07 I come from Java and want to know what monads are in Haskell - Tim Carstens
- 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.
- 2010-08 A Fistful of Monads from Learn You a Haskell
- An introduction to monads that builds on applicative functors
- 2010-08 Yet Another Monad Tutorial
- An ongoing sequence of extremely detailed tutorials deriving monads from first principles.
11 year 2011
- 2011-01 Monads for the Curious Programmer: Part 1, Part 2, Part 3, and Monads in C++ - Bartosz Milewski [3405, 4293, 3416, and 5244 words]
- 2011-03 monads in R: sapply and foreach - Ferdinand Jamitzky
- "Monads are a powerful way of structuring functional programs"
- "Monads are really about composing functions"
- 2011-04 Understanding Haskell Monads - Ertugrul Söylemez [12385 words]
- 2011-10 The Dead Simple, No Chit Chat, Zero-Analogy Haskell Monad Tutorial - Dan Burton [1768 words]
12 year 2012
- 2012-02 Futures: Monads with the Context of Asynchronous Programming - mr23
- "it's best to think of a monad as representing some context. What do I mean by context? ..."
- 2012-02 The Day Python Embarassed Imperative Programming - The 27th Comrade
- "Monads are conditional function calls"
- 2012-02 Scala Monads - Dan Rosen, Marakana [scala, video]
- 2012-04 The Less Travelled Monad Tutorial: Part 1, Part 2 - mightybyte
- 2012-04 Why Do Monads Matter? - Chris Smith