diff options
Diffstat (limited to 'Utility/Conditional.hs')
-rw-r--r-- | Utility/Conditional.hs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Utility/Conditional.hs b/Utility/Conditional.hs index 85e39ec64..7a0df4b48 100644 --- a/Utility/Conditional.hs +++ b/Utility/Conditional.hs @@ -9,6 +9,12 @@ 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 |