Monads in OCaml. Uses modules for generic monad functions.