module Control.Monad.Adaptive.MonadUtil where

ifM :: Monad m => m Bool -> m a -> m a -> m a
ifM b a c = do b' <- b; if b' then a else c

whenM :: Monad m => m Bool -> m () -> m ()
whenM b a = ifM b a (return ())

unlessM :: Monad m => m Bool -> m () -> m ()
unlessM b a = ifM b (return ()) a