module Control.Monad.Extended
    ( module Control.Monad
    , unlessM_
    , untilM_
    ) where

import Control.Monad


unlessM_ :: Monad m => m Bool -> m () -> m ()
unlessM_ p f = p >>= flip unless f

untilM_ :: Monad m => m Bool -> m a -> m ()
untilM_ p f = unlessM_ p (f >> untilM_ p f)