numeric-prelude-0.0.4: src/NumericPrelude/Monad.hs
module NumericPrelude.Monad where
{- | repeat action until result fulfills condition -}
{-# INLINE untilM #-}
untilM :: (Monad m) => (a -> Bool) -> m a -> m a
untilM p m =
do x <- m
if p x
then return x
else untilM p m