Difference between revisions of "Monad tutorials timeline"
From HaskellWiki
m (Restored chronological order of entries) 
m (Another one for the collection...) 

(10 intermediate revisions by 2 users not shown)  
Line 11:  Line 11:  
== before 2000 == 
== before 2000 == 

⚫  
+  * 199202 (published date) [https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.9361&rep=rep1&type=pdf The essence of functional programming]  Philip Wadler 

⚫  * 199208 [http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf Monads for Functional Programming] (pdf)  Phil Wadler, a designer of Haskell [9100 words] . Note that this PDF<! sha256 sum of the pdf: 72789512288e3229ea8d82fdf3a8d9787be7f1578dce609e27259fa999892f2e > seems to be from 1996, according to the TeX error on page 14. It has a reference dated 1995. 

*: "Shall I be pure or impure?" ... "A monad is a triple (M; unit; *) consisting of a type constructor M and two operations of the given polymorphic types." 
*: "Shall I be pure or impure?" ... "A monad is a triple (M; unit; *) consisting of a type constructor M and two operations of the given polymorphic types." 

Line 84:  Line 85:  
* 200701 [http://koweycode.blogspot.com/2007/01/thinkofmonad.html Think of a monad]  Don Stewart (reposted on Eric Kow's blog) 
* 200701 [http://koweycode.blogspot.com/2007/01/thinkofmonad.html Think of a monad]  Don Stewart (reposted on Eric Kow's blog) 

*: Don integrates some preexisting monadic metaphors, shedding light on monads in a truly comprehensive manner (illustration by Eric) 
*: Don integrates some preexisting monadic metaphors, shedding light on monads in a truly comprehensive manner (illustration by Eric) 

+  
* 200702 [http://kawagner.blogspot.com/2007/02/understandingmonadsforreal.html Understanding Monads. For Real]  Karsten Wagner 
* 200702 [http://kawagner.blogspot.com/2007/02/understandingmonadsforreal.html Understanding Monads. For Real]  Karsten Wagner 

*: A monad is like a macro 
*: A monad is like a macro 

+  
* 200702 [http://patryshev.com/monad/mintro.html Crash Course in Monads] Monads for Mathematicians  Vlad Patryshev 
* 200702 [http://patryshev.com/monad/mintro.html Crash Course in Monads] Monads for Mathematicians  Vlad Patryshev 

*: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. 
*: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. 

+  
* 200703 [http://www.randomhacks.net/articles/2007/03/12/monadsin15minutes Monads in 15 Minutes]  Eric Kidd 
* 200703 [http://www.randomhacks.net/articles/2007/03/12/monadsin15minutes Monads in 15 Minutes]  Eric Kidd 

*: Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses <hask>join</hask>, which seems quite rare for monad tutorials (cf Cale's ''Monads as containers'') 
*: Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses <hask>join</hask>, which seems quite rare for monad tutorials (cf Cale's ''Monads as containers'') 

*: Then I lie down in a dark room with a warm wet cloth over my eyes. 
*: Then I lie down in a dark room with a warm wet cloth over my eyes. 

+  
* 200704 [http://saxophone.jpberlin.de/MonadTransformer?source=http%3A%2F%2Fwww%2Ehaskell%2Eorg%2Fhaskellwiki%2FCategory%3AMonad&language=English The Real Monad Transformer]  Henning Thielemann 
* 200704 [http://saxophone.jpberlin.de/MonadTransformer?source=http%3A%2F%2Fwww%2Ehaskell%2Eorg%2Fhaskellwiki%2FCategory%3AMonad&language=English The Real Monad Transformer]  Henning Thielemann 

*: Not a tutorial either, but an important aid in demystifying monads 
*: Not a tutorial either, but an important aid in demystifying monads 

+  
* 200708 [[Monads as computation]]  Cale Gibbard 
* 200708 [[Monads as computation]]  Cale Gibbard 

*: A very straightforward presentation of monads. Notable for its "The whole point" section, which conveys why we bother with all this monad business. 
*: A very straightforward presentation of monads. Notable for its "The whole point" section, which conveys why we bother with all this monad business. 

+  
* 200708 [http://en.wikibooks.org/wiki/Haskell/Understanding%20monads Understanding Monads] (2)  Apfelmus 
* 200708 [http://en.wikibooks.org/wiki/Haskell/Understanding%20monads Understanding Monads] (2)  Apfelmus 

*: Wikibook rewrite of the original monads tutorial. Less fluff, more pedagogy. [In progress at the time of this writing]. 
*: Wikibook rewrite of the original monads tutorial. Less fluff, more pedagogy. [In progress at the time of this writing]. 

+  
* 200708 [[Monad (sans metaphors)]]  Claus Reinke 
* 200708 [[Monad (sans metaphors)]]  Claus Reinke 

*: From a discussion about monad tutorials on Haskell Café (the name is due to haskellwiki user 'Green tea'). 
*: From a discussion about monad tutorials on Haskell Café (the name is due to haskellwiki user 'Green tea'). 

−  * 200711 [http://tobold.org/book/doio How to do IO in Haskell]  Toby Goodwin 

−  *: In some ways, a ''non''monad tutorial, describes Haskell IO (with lots and lots of examples) with an emphasis on types, rather than monad theory 

== year 2008 == 
== year 2008 == 

Line 167:  Line 173:  
*: "Monads are a powerful way of structuring functional programs" 
*: "Monads are a powerful way of structuring functional programs" 

−  * 201104 [http://blog.jcoglan.com/2011/03/05/translationfromhaskelltojavascriptofselectedportionsofthebestintroductiontomonadsiveeverread/ Translation from Haskell to JavaScript of selected portions of the best introduction to monads 
+  * 201104 [http://blog.jcoglan.com/2011/03/05/translationfromhaskelltojavascriptofselectedportionsofthebestintroductiontomonadsiveeverread/ Translation from Haskell to JavaScript of selected portions of the best introduction to monads I¢ve ever read]  James Coglan [3200 words, Javascript] (cf. 2006 "You Could Have Invented Monads") 
*: "Monads are really about composing functions" 
*: "Monads are really about composing functions" 

Line 201:  Line 207:  
* 201303 [http://blog.leahhanson.us/post/monadtutorial.html A Simple Monad Tutorial]  Leah Hanson 
* 201303 [http://blog.leahhanson.us/post/monadtutorial.html A Simple Monad Tutorial]  Leah Hanson 

* 201304 [http://adit.io/posts/20130417functors,_applicatives,_and_monads_in_pictures.html Functors, Applicatives, And Monads In Pictures]. 
* 201304 [http://adit.io/posts/20130417functors,_applicatives,_and_monads_in_pictures.html Functors, Applicatives, And Monads In Pictures]. 

+  * 201304 [http://www.alpheccar.org/content/60.html A newbie in Haskell land] 

+  *: "I have identified three kinds of monads ... Monad as control of the sequencing ; Monad as control of side effects ; Monad as container" 

+  ** other articles: 

+  *** [http://www.alpheccar.org/content/61.html (>) monad] 

+  *** [http://www.alpheccar.org/content/67.html Haskell Study Plan] 

+  *** [http://www.alpheccar.org/content/74.html Category Theory and the category of Haskell programs : parts 1], [http://www.alpheccar.org/content/76.html 2] and [http://www.alpheccar.org/content/77.html 3] 

+  *** [http://www.alpheccar.org/content/86.html Coproduct of free monads and web development] 

+  *** [http://www.alpheccar.org/content/87.html A Web Monad] 

+  *** [http://www.alpheccar.org/content/90.html Meaning and monads] 

* 201305 [http://mergeconflict.com/kleislicompositionalaupgoerfive/ Kleisli Composition à la UpGoer Five]. 
* 201305 [http://mergeconflict.com/kleislicompositionalaupgoerfive/ Kleisli Composition à la UpGoer Five]. 

* 201306 [http://adit.io/posts/20130610threeusefulmonads.html Three Useful Monads] 
* 201306 [http://adit.io/posts/20130610threeusefulmonads.html Three Useful Monads] 

Line 210:  Line 225:  
* 201308 [https://www.fpcomplete.com/school/startingwithhaskell/basicsofhaskell/12StateMonad State monad] 
* 201308 [https://www.fpcomplete.com/school/startingwithhaskell/basicsofhaskell/12StateMonad State monad] 

* 201310 [https://www.cs.hmc.edu/~adavidso/monads.pdf Monads and Side Effects in Haskell]  Alan Davidson 
* 201310 [https://www.cs.hmc.edu/~adavidso/monads.pdf Monads and Side Effects in Haskell]  Alan Davidson 

+  * 201310 [https://sean.voisen.org/blog/2013/10/intromonadsmaybe A gentle intro to monads ... maybe?]  Sean Voisen 

* 201312 [http://www.cakesolutions.net/teamblogs/2013/12/29/monadtransformers/ Monad transformers] 
* 201312 [http://www.cakesolutions.net/teamblogs/2013/12/29/monadtransformers/ Monad transformers] 

* 201312 [https://www.fpcomplete.com/school/startingwithhaskell/basicsofhaskell/thetaoofmonad The tao of monad] 
* 201312 [https://www.fpcomplete.com/school/startingwithhaskell/basicsofhaskell/thetaoofmonad The tao of monad] 

Line 224:  Line 240:  
* 201403 [http://www.johndcook.com/blog/2014/03/03/monadsarehardbecause/ Monads are hard because...] 
* 201403 [http://www.johndcook.com/blog/2014/03/03/monadsarehardbecause/ Monads are hard because...] 

* 201404 [http://www.haskellforall.com/2014/04/howcontinuationmonadworks.html How continuation monad works] 
* 201404 [http://www.haskellforall.com/2014/04/howcontinuationmonadworks.html How continuation monad works] 

+  * 201404 [https://queue.acm.org/detail.cfm?id=2611829 "Mostly functional" programming does not work: Informal Introduction to Monads] 

* 201410 [http://codon.com/refactoringrubywithmonads Refactoring Ruby with Monads] 
* 201410 [http://codon.com/refactoringrubywithmonads Refactoring Ruby with Monads] 

== year 2015 == 
== year 2015 == 

+  
+  * 201507 [https://fsharpforfunandprofit.com/posts/monadster Dr Frankenfunctor and the Monadster] 

+  *: "Or, how a 19th century scientist nearly invented the state monad." 

* 201508 [https://blog.reverberate.org/2015/08/monadsdemystified.html Monads Demystified]  Josh Haberman 
* 201508 [https://blog.reverberate.org/2015/08/monadsdemystified.html Monads Demystified]  Josh Haberman 

* 201511 [https://codetalk.io/posts/20151128brieflyonthepurposeoffunctorsapplicativesandmonads.html Briefly on the purpose of Functors, Applicatives and Monads] 
* 201511 [https://codetalk.io/posts/20151128brieflyonthepurposeoffunctorsapplicativesandmonads.html Briefly on the purpose of Functors, Applicatives and Monads] 

Line 232:  Line 252:  
== year 2016 == 
== year 2016 == 

+  * 201604 [https://engineering.sharethrough.com/blog/2016/04/18/explainingmonadspart1 Monads are confusing. Let us help]  Kelley Robinson 

* 201609 [https://medium.com/@franzejr/aquickintroaboutmonads291e50dda062 A quick intro about Monads]  franzejr 
* 201609 [https://medium.com/@franzejr/aquickintroaboutmonads291e50dda062 A quick intro about Monads]  franzejr 

+  * 201610 [https://www.ahnfelt.net/monadsforgetaboutbind Monads (forget about bind)]  Joakim AhnfeltRonne 

== year 2017 == 
== year 2017 == 

Line 242:  Line 264:  
* 201711 [https://diego.codes/post/learningmonads Learning Monads by Example]  Diego Vicente 
* 201711 [https://diego.codes/post/learningmonads Learning Monads by Example]  Diego Vicente 

*: "While writing my bachelor thesis, a heuristic search framework in Haskell, I ran into a roadblock I long feared to have: I needed to understand how monads work." 
*: "While writing my bachelor thesis, a heuristic search framework in Haskell, I ran into a roadblock I long feared to have: I needed to understand how monads work." 

+  
+  == year 2019 == 

+  * 201904 [https://mmhaskell.com/monads/tutorial Monads Tutorial]  ''Monday Morning Haskell'' 

+  *: "[...] here's my crack at a definition: A Monad wraps a value or a computation with a particular '''context'''." 

== year 2020 == 
== year 2020 == 

Line 247:  Line 273:  
*: " I like concrete explanations that start with practical examples, without any annoying metaphors, and especially without any Haskell code." 
*: " I like concrete explanations that start with practical examples, without any annoying metaphors, and especially without any Haskell code." 

−  == 
+  == year 2021 == 
−  +  * 202103 [[Merely monadic]]  (''Haskell community'') 

−  * 
+  *: "In Haskell, monadic types  types having an instance for the Monad class  can be thought of as abstract descriptors of computations which are inherently composable [...]" 
−  *: "I have identified three kinds of monads ... Monad as control of the sequencing ; Monad as control of side effects ; Monad as container" 

−  
−  *[http://www.alpheccar.org/content/61.html A newbie in Haskell land : > monad] 

−  *[http://www.alpheccar.org/content/67.html Haskell Study Plan] 

−  *[http://www.alpheccar.org/content/74.html Category Theory and the category of Haskell programs : Part 1], [http://www.alpheccar.org/content/76.html part 2], [http://www.alpheccar.org/content/77.html part 3] 

−  *[http://www.alpheccar.org/content/86.html Coproduct of free monads and web development] 

−  *[http://www.alpheccar.org/content/87.html A Web Monad] 

−  *[http://www.alpheccar.org/content/90.html Meaning and monads] 
Latest revision as of 15:15, 22 August 2021
This is a comprehensive timeline of monad tutorials and related articles.
Please update this list as it becomes outdated! If you find a tutorial, article, post, comment, or message that stands on its own as an explanation of monads, then please take a moment to paste the link somewhere on this page (register a throwaway account, if you prefer). The date, author, and blurb can be added later. This will greatly help others who are using this list as a resource for learning about monads.
Contents
before 2000
 199202 (published date) The essence of functional programming  Philip Wadler
 199208 Monads for Functional Programming (pdf)  Phil Wadler, a designer of Haskell [9100 words] . Note that this PDF seems to be from 1996, according to the TeX error on page 14. It has a reference dated 1995.
 "Shall I be pure or impure?" ... "A monad is a triple (M; unit; *) consisting of a type constructor M and two operations of the given polymorphic types."
 199505 Monadic IO in Haskell 1.3  Andrew D. Gordon and Kevin Hammond
 "We describe the design and use of monadic I/O in Haskell 1.3"
 199902 What the hell are Monads?  Noel Winstanley [2800 words]
 "Once upon a time, people wrote their Haskell programs by sequencing together operations in an adhoc way." ... "For our purposes, a monad is a triple of a type and then> & return operators defined over it so that the following laws apply: ..."
 1999Spring Monads for the working Haskell Programmer  Theodore S. Norvell [4200 words, Haskell98, Gofer]
 "...monads can be used to implement several other programming features including: consuming input, producing output, exceptions and exception handling, nondeterminisim."
year 2002
 2002 Yet Another Haskell Tutorial (Chapter: Monads)  Hal Daumé III
 "The definition of a monad is a slightly trimmeddown version of our Computation class. The Monad class has four methods ..."
year 2003
 200308 All about Monads  Jeff Newbern [22600 words] (Japanese translation: モナドのすべて)
 A comprehensive introduction. Covers monad transformers and some common monads. An appendix presents monads as assembly lines.
 "A monad is a way to structure computations in terms of values and sequences of computations using those values."
year 2004
 200407 A Schemer's Introduction to Monads  Dave Herman [1700 words, Lisp, Scheme]
 "The main insight of monads is that all side effects, from mutation to I/O to nontermination, have one thing in common: order of evaluation matters." ... "So monads are about talking about effects in the context of a pure semantics."
 200407 Monads as Containers (Russian translation)  Cale Gibbard [2900 words]
 "A monad is a container type together with a few methods defined on it. Monads model different kinds of computations." ... "it is more natural sometimes to begin with map (fmap), return and join"
 200408 Monads in Perl  Greg Buchholz [2200 words, Perl]
 "Essentially a monad is a hidden data structure (Fig. 1) which automatically passes state around for us. "
year 2005
 200507 Monads in Ruby  MenTaLguY
 Presents monads in a friendly language, starting from Identity
 "They let you chain pass [bind] operations together to make little computational pipelines, with rules of your choosing. They don’t manipulate values themselves — that’s the job of the blocks (functions) you plumb together using the monad."
 200511 Of monads and space suits  Eric Kow
 Functions are space stations, parameters are astronauts and monads are space suits that let us safely travel from one function to another.
year 2006
 200603 Understanding Monads  Eric Kow
 Monads as nuclear waste containers, an adaptation of monads as space suits with a new metaphor suggested by Paul Johnson
 "What we need is some way to capture the pattern 'do X and then do Y, where Y may be affected by X'. Monads are the way we do this." ... "In a sense, each monad is its own little minilanguage specially suited for its particular task."
 200607 The Monadic Way  Andrea Rossato
 A twopart tutorial. The first part shows you how build a simple evaluator, and the second part shows you how to "take the complexity" out of it by using techniques such as monad transformers
 Revised 200609 to include Meet Bob The Monadic Lover: "what monads look like and what they are useful for, from the perspective of a ... lover."
 200608 You could have invented monads! (and maybe you already have)  Dan Piponi
 "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.
 "So now I can reveal what a monad is. The triple of objects (m,unit,bind) is the monad, and to be a monad they must satisfy a bunch of laws such as the ones you've been proving."
 200610 Ask Reddit: What the hell are monads?, an answer  tmoertel [700 words]
 "I think of monads as computational environments in which you get to make up the rules." ... "monads are ... a general model of computation that lets you pick and choose the environmental features that you want for your computations."
 200610 Monad Transformers Step by Step  Martin Grabmüller
 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.
 200611 There's a Monster in my Haskell! Andrew Pimlott
 This delightful "tutorial" presents monads as monsters which devour values, use them to feed other monsters and regurgitate them when slain.
 200612 Maybe Monad in Java  Tony Morris
 Monads can also be useful in Java!
year 2007
 200701 Think of a monad  Don Stewart (reposted on Eric Kow's blog)
 Don integrates some preexisting monadic metaphors, shedding light on monads in a truly comprehensive manner (illustration by Eric)
 200702 Understanding Monads. For Real  Karsten Wagner
 A monad is like a macro
 200702 Crash Course in Monads Monads for Mathematicians  Vlad Patryshev
 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.
 200703 Monads in 15 Minutes  Eric Kidd
 Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses
join
, which seems quite rare for monad tutorials (cf Cale's Monads as containers)  Then I lie down in a dark room with a warm wet cloth over my eyes.
 Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses
 200704 The Real Monad Transformer  Henning Thielemann
 Not a tutorial either, but an important aid in demystifying monads
 200708 Monads as computation  Cale Gibbard
 A very straightforward presentation of monads. Notable for its "The whole point" section, which conveys why we bother with all this monad business.
 200708 Understanding Monads (2)  Apfelmus
 Wikibook rewrite of the original monads tutorial. Less fluff, more pedagogy. [In progress at the time of this writing].
 200708 Monad (sans metaphors)  Claus Reinke
 From a discussion about monad tutorials on Haskell Café (the name is due to haskellwiki user 'Green tea').
year 2008
 200801 An explanation by 808140 [1588 words]
 "The best way to grok monads is to ... familiarize yourself with several common monads and their uses." ... "All that makes a monad, really, is that you can define two functions like unit and bind on them."
 200803 Real World Haskell, Chapter 14: Monads  Bryan O'Sullivan, Don Stewart, and John Goerzen
 "We aim to show you that a monad is often an obvious and useful tool to help solve a problem."
 200806 Monads (in Russian, English translation)  Eugene Kirpichov [8200 words ru, 10000 en]
 "A monad is a triple (m, return, >>=), where: ..." ... "As we progressed, we saw that monads are most commonly used for two different purposes: structuring the control flow and describing imperative effectful computations (IO, State, IndentIO), and structuring data flow (Maybe, List, Dist)."
 200809 What is a monad?, an answer  JacquesB (other answers at link)
 "An alternative term is computation builder which is a bit more descriptive of what they are actually useful for." ... "In layman's terms, a monad is just a type for which the >>= operation is defined."
 200812 From Monoids to Monads  Dan Piponi
year 2009
 200901 Abstraction, intuition, and the “monad tutorial fallacy”  Brent Yorgey [meta]
 Commentary on monad tutorials and why many may be so unhelpful. "What I term the 'monad tutorial fallacy,' then, consists in failing to recognize the critical role that struggling through fundamental details plays in the building of intuition."
 200903 A Monad Tutorial for Clojure Programmers
 "Monads are about composing computational steps into a bigger multistep computation."
 200903 How you should(n’t) use Monad  beelsebob
 "When we have functions that produce values that are hidden inside boxes, we have a problem. ... Monads add a single function called join, which is used to flatten out the layers of boxes: ..."
 200906 The Greenhorn's Guide to becoming a Monad Cowboy  Hans van Thiel [9600 words]
 Covers basics, with simple examples, in a for dummies style. Includes monad transformers and monadic functions. "Actually, programming monads is much like cattle driving! So, let's get started."
 200910 The State Monad: A Tutorial for the Confused?  Brandon Simmons
 This is written for someone who has a good understanding of the Maybe and List monads, but has gotten stuck trying to understand State... State monad is just an abstraction for a function that takes a state and returns an intermediate value and some new state value.
 200911 What a Monad is not
 A desperate (futile?) attempt to end the eternal chain of monad tutorials.
year 2010
 201003 State Monad Tutorial  Byron Johnson
 "My goal is to teach others to help them understand the State monad. ... After this point, you should be able to easily understand the other monads."
 201004 Programming with effects – the story so far  Patai Gergely
 Explains the relationships between the various abstractions over side effects, namely applicative functors, arrows, and monads.
 201007 I come from Java and want to know what monads are in Haskell  Tim Carstens [Java]
 Translates a simple Java class 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.
 "What I am going to talk about is how to use monads to do something in Haskell that is easy to do in Java." ... "This is what different monads do: each comes with its own set of operations that are legal within the context that the monad is modeling."
 201008 Learn You a Haskell, A Fistful of Monads
 "monads are just applicative functors that support >>=. The >>= function is pronounced as bind."
 201008 Yet Another Monad Tutorial, part 1 (2, 3, 4, 5, 6, 7, 8)  Mike Vanier [7100 words p1, 45000 total]
 "Monads are a generalization of functions, function application, and function composition to allow them to deal with richer notions of computation than standard functions."
 201010 A monad is just a monoid in the category of endofunctors, what's the problem?, an answer  pelotom (other answers at link)
 "The original sentence is this: All told, a monad in X is just a monoid in the category of endofunctors of X, with product × replaced by composition of endofunctors and unit set by the identity endofunctor."
 201011 Monads and Effects in Purely Functional Programming (slides)  Johan Glimming
year 2011
 201101 Monads for the Curious Programmer: Part 1, Part 2, Part 3, and Monads in C++  Bartosz Milewski [3400, 4300, 3400, and 5200 words]
 "Monads are hard to describe because they don’t correspond to anything in our everyday experience" ... "A monad is an endofunctor together with two special families of morphisms, both going vertically, one up and one down"
 201103 monads in R: sapply and foreach  Ferdinand Jamitzky
 "Monads are a powerful way of structuring functional programs"
 201104 Translation from Haskell to JavaScript of selected portions of the best introduction to monads I¢ve ever read  James Coglan [3200 words, Javascript] (cf. 2006 "You Could Have Invented Monads")
 "Monads are really about composing functions"
 201104 Understanding Haskell Monads  Ertugrul Söylemez [12400 words]
 "A monad is a wrapper type around another type (the inner type), which adds a certain structure to the inner type and allows you to combine computations of the inner type in a certain way."
 201110 The Dead Simple, No Chit Chat, ZeroAnalogy Haskell Monad Tutorial  Dan Burton [1800 words]
 "Monads are simply Applicative Functors, which also define some way of flattening nested monadic values, and shoving monadic values into monadic functions. Applicative Functors are..."
year 2012
 201202 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? ..."
 201202 The Day Python Embarassed Imperative Programming  The 27th Comrade
 "Monads are conditional function calls"
 201202 Scala Monads  Dan Rosen, Marakana [scala, video]
 201204 The Less Travelled Monad Tutorial: Part 1, Part 2  mightybyte
 "a monad is a certain type of context that provides two things: a way to put things into the context, and function application within the context"
 201204 Why Do Monads Matter?  Chris Smith
 "... The category that they form is called a Kleisli category, and it’s basically another way of looking at monads."
 201208 Monads in Pictures  johnw
 "This is not a tutoral on monads, nor will I use any math terms here. This is for people who have learned enough about monads to use them, but want to get a better picture of what they’re doing and why they exist."
 201211 Monads à la Mode  Cameron Swords and Daniel P. Friedman
 "The purpose of this article is to provide a concise introductionto monads for anyone who has an understanding of Scheme and simple types."
year 2013
 201301 Monads in Haskell: An Introduction  Benjamin Kovach
 201303 A Simple Monad Tutorial  Leah Hanson
 201304 Functors, Applicatives, And Monads In Pictures.
 201304 A newbie in Haskell land
 "I have identified three kinds of monads ... Monad as control of the sequencing ; Monad as control of side effects ; Monad as container"
 201305 Kleisli Composition à la UpGoer Five.
 201306 Three Useful Monads
 201307 Monads Made Difficult
 201308 From Adjunctions to Monads
 201308 Functors and monads for analyzing data
 201308 Pure Functions, Laziness, I/O, and Monads
 201308 Error Handling
 201308 State monad
 201310 Monads and Side Effects in Haskell  Alan Davidson
 201310 A gentle intro to monads ... maybe?  Sean Voisen
 201312 Monad transformers
 201312 The tao of monad
 201312 The First Monad Tutorial (slides)  Philip Wadler
year 2014
 201401 Monads in Haskell: Algebra
 201401 Yet Another Monad Tutorial in 15 Minutes
 201401 Using Monads in Haskell
 201401 Monads in Haskell: Lists &c
 201401 PROGRAMMING WITH EFFECTS
 201402 monads made difficult
 201403 Error Handling
 201403 Monads are hard because...
 201404 How continuation monad works
 201404 "Mostly functional" programming does not work: Informal Introduction to Monads
 201410 Refactoring Ruby with Monads
year 2015
 201507 Dr Frankenfunctor and the Monadster
 "Or, how a 19th century scientist nearly invented the state monad."
 201508 Monads Demystified  Josh Haberman
 201511 Briefly on the purpose of Functors, Applicatives and Monads
 201511 A 5Minute Monad Tutorial  Andrew Hirsch
year 2016
 201604 Monads are confusing. Let us help  Kelley Robinson
 201609 A quick intro about Monads  franzejr
 201610 Monads (forget about bind)  Joakim AhnfeltRonne
year 2017
 201703 Functors & Monads: An Introduction  Miguel Fonseca
 201711 Understanding Monads. A Guide for the Perplexed  Barry Burd
 "With the current explosion of functional programming, the 'monad' functional structure is once again striking fear into the hearts of newcomers."
 201711 Learning Monads by Example  Diego Vicente
 "While writing my bachelor thesis, a heuristic search framework in Haskell, I ran into a roadblock I long feared to have: I needed to understand how monads work."
year 2019
 201904 Monads Tutorial  Monday Morning Haskell
 "[...] here's my crack at a definition: A Monad wraps a value or a computation with a particular context."
year 2020
 202007 Yet another lousy monad tutorial  Chankey Pathak
 " I like concrete explanations that start with practical examples, without any annoying metaphors, and especially without any Haskell code."
year 2021
 202103 Merely monadic  (Haskell community)
 "In Haskell, monadic types  types having an instance for the Monad class  can be thought of as abstract descriptors of computations which are inherently composable [...]"