Ubiquitous monad tutorial - Monads as programmable semi-colons.