Computational lambda-calculus and monads | Synapse