Since GHC 7.10 `Monad` instances need to be accompanied by `Applicative` instances which in turn need `Functor` instances. These are missing from this presentation, but are present in the full source code for this lectures.

Monads

Recommended reading: Philip Wadler, Monads for functional programming. In Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques, Båstad, Sweden, May 24-30, 1995.

Some programming features in imperative languages

What about in Haskell? (Pure functional language)

Handling errors explicitly

Logging

Side-effects & pure functional programming

Imperative programming Pure functional programming
Error handling Plumbing (check if any subcomputation has failed)
Logging Plumbing (consider subcomputations' logs)

Monads

Construction of programs

Error handling

Error handling in the interpreter

Logging

Enter Monads

Revising interpreters with do-notation

Monads and EDSL?

Deep embedding for error handling monad

Stateful computations

Implementation (shallow embedding)

Monads so far