Monads encode syntactic representations of algebraic structure. Additionally, monads have attained cult status in parts of the PLT community for their ability to encode stateful computations in purely functional programming languages like Haskell.

Notoriously, a monad on a category \(C\) is a monoid in the monoidal category of endofunctors of \(C\). This is actually a good way to remember the definition.

General theory

Monads are covered in most textbooks on category theory, such as:

  • Borceux, 1994: Handbook of Categorical Algebra, Vol. 2, Ch. 4: Monads
  • Awodey, 2010: Category Theory, 2nd ed., Ch. 10: Monads and algebras
  • Riehl, 2016: Category Theory in Context, Ch. 5: Monads and their algebras
    • Nice list of examples from mathematics and computer science
  • Jacobs, 2017: Introduction to Coalgebra, Ch. 5: Monads, comonads, and distributive laws (doi)

The mathematical significance of monads comes mainly from their connection with universal algebra .

  • Baez, 2006, lectures: Universal algebra and diagrammatic reasoning (slides)
  • Hyland & Power, 2007: The category theoretic understanding of universal algebra: Lawvere theories and monads (doi, nCat Cafe )
    • Contrasts the two categorical formulations of universal algebra: Lawvere theories versus monads
    • Behrisch, Kerkhoff, Power, 2012: Category theoretic understandings of universal algebra and its dual: Monads and Lavwere theories, comonads and what? (doi)
  • Voutas, 2012, expository notes: The basic theory of monads and their connection to universal algebra (pdf)

Special monads and applications

Probability monads

For the Giry monad and other probability monads, see categorical probability theory.