Module Array.BsMonadExtensions

module I: { ... };
module A: { ... };
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);