Choice operator in OCaml, providing a backtracking monad