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