* `Writer_monad` (has to be parameterized on the type of the written data; use `Writer1` as a simple predefined case)
* `Error_monad`, with `throw err` and `catch u handler_function` operations (this has to be parameterized on the type of `err`; use `Failure` as a simple predefined case, where `type err = string`)
* `IO_monad` (you don't need this in OCaml, but it works analagously to the `IO` monad in Haskell, so it's handy for working with Haskell-written algorithms in OCaml)
- * `Leaf_monad` (leaf-labeled, binary trees)
+ * `Tree_monad` (leaf-labeled, binary trees)
* and of course, `Continuation_monad`, with `callcc`, `reset`, `shift` and `abort` operations.
* All of these monads come with [[monad transformers]] too. To get a State monad wrapped around a Maybe monad, do this: