sig
  type 'a t
  val ( >>= ) :
    'Monad.Option.t -> ('-> 'Monad.Option.t) -> 'Monad.Option.t
  val ( >> ) : 'Monad.Option.t -> 'Monad.Option.t -> 'Monad.Option.t
  val return : '-> 'Monad.Option.t
  val run : 'Monad.Option.t -> 'a
  val fail : 'Monad.Option.t
  val on_fail : 'Monad.Option.t -> 'Monad.Option.t -> 'Monad.Option.t
end