sig
  type +'a m
  val return : 'a -> 'a Deriving_monad.Monad.m
  val fail : string -> 'a Deriving_monad.Monad.m
  val ( >>= ) :
    'a Deriving_monad.Monad.m ->
    ('a -> 'b Deriving_monad.Monad.m) -> 'b Deriving_monad.Monad.m
  val ( >> ) :
    'a Deriving_monad.Monad.m ->
    'b Deriving_monad.Monad.m -> 'b Deriving_monad.Monad.m
end