OCamlのpa_monadは?
perform記法ってdo記法と似てると思うよ

http://www.cas.mcmaster.ca/~carette/pa_monad/