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