Skip to content
HN On Hacker News ↗

Monad tutorials timeline - HaskellWiki

▲ 106 points 57 comments by brudgers 2mo ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is fully human-written

1 %

AI likelihood · overall

Human
100% human-written 0% AI-generated
SEGMENTS · HUMAN 6 of 6
SEGMENTS · AI 0 of 6
WORD COUNT 1,749
PEAK AI % 1% · §5
Analyzed
Apr 30
backend: pangram/v3.3
Segments scanned
6 windows
avg 292 words each
Distribution
100 / 0%
human / AI fraction
Verdict
Human
Pangram v3.3

Article text · 1,749 words · 6 segments analyzed

Human AI-generated
§1 Human · 1%

From HaskellWiki

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.

“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.”

Categories for the Working Mathematician, Saunders Mac Lane.before 20001992-02 (published date) The essence of functional programming - Philip Wadler "This paper explores the use monads to structure functional programs. No prior knowledge of monads or category theory is required."1992-08 Monads for Functional Programming (pdf) - Phil Wadler, a designer of Haskell [9100 words]. "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."1995 Semantic Lego(pdf) - David Espinosa "Denotational Semantics is a powerful framework for describing programming languages: however its descriptions lack modularity: ... Following Moggi, we build the computation ADT from composable parts, using monads and monad transformers."1995-05 Monadic IO in Haskell 1.3 - Andrew D. Gordon and Kevin Hammond (PDF: paper, conference proceedings) "We describe the design and use of monadic I/O in Haskell 1.3"1995-09 Modular Denotational Semantics for Compiler Construction(pdf) - Sheng Liang and Paul Hudak "Moggi first used monads and monad transformers to structure denotational semantics."1999-02 What the hell are Monads? -

§2 Human · 1%

Noel Winstanley [2800 words] "Once upon a time, people wrote their Haskell programs by sequencing together operations in an ad-hoc 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: ..."year 20002000-01 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 20022002 Yet Another Haskell Tutorial (Chapter: Monads) - Hal Daumé III "The definition of a monad is a slightly trimmed-down version of our Computation class. The Monad class has four methods ..."year 20032003-08 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 20042004-07 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 non-termination, have one thing in common: order of evaluation matters." ... "So monads are about talking about effects in the context of a pure semantics."2004-07 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"2004-08 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. "

§3 Human · 1%

year 20052005-07 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."2005-11 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 20062006-03 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."2006-07 The Monadic Way - Andrea Rossato A two-part 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 2006-09 to include Meet Bob The Monadic Lover: "what monads look like and what they are useful for, from the perspective of a ... lover."2006-08 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.

§4 Human · 1%

"2009-06 Monads: Computations where order matters - Tim Sheard 2006-10 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."2006-10 Monad Transformers Step by Step - Martin Grabmüller (also: updated version and associated Haskell code) 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.2006-11 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.2006-12 Maybe Monad in Java - Tony Morris Monads can also be useful in Java!year 20072007-01 Think of a monad - Don Stewart (reposted on Eric Kow's blog) Don integrates some pre-existing monadic metaphors, shedding light on monads in a truly comprehensive manner (illustration by Eric)2007-02 Understanding Monads. For Real - Karsten Wagner A monad is like a macro2007-02 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.2007-03 Monads in 15 Minutes - Eric Kidd Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples.

§5 Human · 1%

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.2007-08 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.2007-08 Understanding Monads (2) - Apfelmus Wikibook rewrite of the original monads tutorial. Less fluff, more pedagogy. [In progress at the time of this writing].2007-08 Monad (sans metaphors) - Claus Reinke From a discussion about monad tutorials on Haskell Café (the name is due to haskellwiki user 'Green tea').2007-09 Monads are Elephants Part 1 - James Iry "Introductions to monads are bit of cottage industry on the Internet. So I figured, "why buck tradition?" But this article will present Scala's way of dealing with monads."year 20082008-01 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."2008-03 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."2008-06 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)."2008-09 What is a monad?,

§6 Human · 1%

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."2008-12 From Monoids to Monads - Dan Piponiyear 20092009-01 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."2009-03 A Monad Tutorial for Clojure Programmers "Monads are about composing computational steps into a bigger multi-step computation."2009-03 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: ..."2009-06 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."2009-10 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.2009-11 What Does Monad Mean? - Tony Morris "The [monad] concept will be presented in a way with the objective of supplying enough understanding to apply the practical implications and will not address the underlying mathematics or category theory.