- let flatten: Monad.t(Monad.t('a)) => Monad.t('a);
- let compose_kliesli: ('a => Monad.t('b)) => ('b => Monad.t('c)) => 'a => Monad.t('c);
- let compose_kliesli_flipped: ('b => Monad.t('c)) => ('a => Monad.t('b)) => 'a => Monad.t('c);
- let if_m: Monad.t(bool) => Monad.t('a) => Monad.t('a) => Monad.t('a);
- let liftM1: ('a => 'b) => Monad.t('a) => Monad.t('b);
- let ap: Monad.t(('a => 'b)) => Monad.t('a) => Monad.t('b);
- let when_: Monad.t(bool) => Monad.t(unit) => Monad.t(unit);
- let unless: Monad.t(bool) => Monad.t(unit) => Monad.t(unit);