Monads for functional programming
Computational lambda-calculus and monads