sig
  type 'a m
  val bind : 'a BatMonad.S.m -> ('a -> 'b BatMonad.S.m) -> 'b BatMonad.S.m
  val return : 'a -> 'a BatMonad.S.m
end