Just want to note that, while not frequently seen, you can use more powerful abstractions (monad transformers, parser combinators, etc) in OCaml.
As an example consider looking at the Angstrom[1] parser combinator library and my Pure[2] functional base library.