
Enjoying these lectures:
A journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. Erik Meijer.

A journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. Erik Meijer.
The central idea behind functional programming is that of building new functions by composing existing ones. Monads move up a level of abstraction by hiding the plumbing necessary to compose functions whose parameters and return values are different. Monad transformers move up yet another level of abstraction by allowing monads to be combined so that the plumbing that each monad does is combined and abstracted away, but without having to write new code.And a some references of Monads tutorials:
from: monads in clojure