A 'free monad' library for OCaml