From Documentation
Jump to: navigation, search

Monads are a design pattern in programming linked to category theory in the early 90s. They have been a fundamental part, that is, required to perform IO, of the lazy functional language Haskell for almost as long. Due to their considerable success in Haskell, formulations have also now sprung up for many other languages. This includes, according to Wikipedia, Scheme, Perl, Python, Racket, Clojure, Scala, F#, and possibly even the newest ML standard.

There is a lot of confusing information/guides to monads on the internet. This ranges from very technical category theory based statements (e.g., monads are just monoids in the category of endofunctors) to very non-technical analogies (e.g., nuclear waste and spacesuits). The goal of this presentation is to present a non-confusing, practical, programmer-based perspective on monads with plenty of examples that also doesn't skimp on the technicalities.