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.
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 )
- Voutas, 2012, expository notes: The basic theory of monads and their connection to universal algebra (pdf)
Special monads and applications
For the Giry monad and other probability monads, see categorical probability theory.