Copyright © 2009 Tony Morris
This presentation is intended for the November 2009 meeting of the Brisbane Functional Programming Group http://www.meetup.com/Brisbane-Functional-Programming-Group-BFG/.
The monad concept will be presented to an audience with the assumption of knowledge of the generics concept of either the Java or C# programming languages or some other form of parametric polymorphism. The 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.
The monad concept has attracted much mysticism, misunderstanding and mythology, which will also be addressed.
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Appendix C, Licence.
Table of Contents
Moggi first described monads for use in structuring programs [MoggiMonads1988]. Philip Wadler and Simon Peyton-Jones have worked further with the concept on introducing them to purely functional programming languages.
It is often said that monads are specific to functional programming. This is not true. Indeed, the term “functional programming” is itself quite a misnomer. It's simply practical programming and the thesis is composition and abstraction (see [WhyFP]). Monads are used in every single programming language. The only distinction is whether or not the user is aware of the fact.
This presentation will set aside the myths and present you with a concrete understanding of a rather simple concept that is easy to understand, but with far reaching implications. If the objectives of this presentation are met, you will be equipped to take advantage of this concept in your every-day programming and explore those implications further.