A *(Learning Lounge) course.

So what are monads? Well, monads are (ignoring Leibniz) a special kind of construction in category theory which are interesting as they can be used to realize in functional languages things like I/O, integration with imperative languages, concurrency and so. For this reason some category theory may help: see _(Category Theory 101).

For the beginner: <a href="http://www.dcs.gla.ac.uk/~nww/Monad.html">What the hell are monads?</a> is a practicioner introduction to monads, monadic programming, monadic I/O and such. Requires some knowledge of Haskell. Check also <a href="http://cs.fit.edu/~satkin/monads.html">Monads for the dazed and confused</a>.

For people willing to know more about that, see <a href="http://www.research.avayalabs.com/user/wadler/topics/monads.html>Philip Wadler's page on monads</a>. Have a look at the paper titled "Understanding monads".

For the theoretically challenged: see <a href="http://www.disi.unige.it/person/MoggiE/">Eugenio Moggi's page</a> under "Publications". He first theorized the use of monads in functional programming languages.