diff options
Diffstat (limited to 'Utility')
-rw-r--r-- | Utility/Conditional.hs | 6 | ||||
-rw-r--r-- | Utility/Monad.hs | 4 |
2 files changed, 4 insertions, 6 deletions
diff --git a/Utility/Conditional.hs b/Utility/Conditional.hs index 7a0df4b48..85e39ec64 100644 --- a/Utility/Conditional.hs +++ b/Utility/Conditional.hs @@ -9,12 +9,6 @@ module Utility.Conditional where import Control.Monad (when, unless) -untilTrue :: Monad m => [v] -> (v -> m Bool) -> m Bool -untilTrue [] _ = return False -untilTrue (v:vs) a = do - ok <- a v - if ok then return ok else untilTrue vs a - whenM :: Monad m => m Bool -> m () -> m () whenM c a = c >>= flip when a diff --git a/Utility/Monad.hs b/Utility/Monad.hs index 9523e1716..0d1675fa4 100644 --- a/Utility/Monad.hs +++ b/Utility/Monad.hs @@ -24,3 +24,7 @@ firstM p (x:xs) = do - stopping once one is found. -} anyM :: (Monad m) => (a -> m Bool) -> [a] -> m Bool anyM p = liftM isJust . firstM p + +{- Runs an action on values from a list until it succeeds. -} +untilTrue :: (Monad m) => [a] -> (a -> m Bool) -> m Bool +untilTrue = flip anyM |