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