X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=c%CE%BBash%2FCLasH%2FUtils.hs;h=94da85494f2216f75b395b542ed6c07b5362ecbf;hb=743f2dcf9a7a37c71fc06ce552f605fac3120e56;hp=aecbfcf6b9cf2cb4346c2ae8449e419b5c464391;hpb=4a1b18cd81cebb66c95cc0ca8a6aaa441bee1418;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git "a/c\316\273ash/CLasH/Utils.hs" "b/c\316\273ash/CLasH/Utils.hs" index aecbfcf..94da854 100644 --- "a/c\316\273ash/CLasH/Utils.hs" +++ "b/c\316\273ash/CLasH/Utils.hs" @@ -46,3 +46,14 @@ concatM = Monad.liftM concat isJustM :: (Monad m) => m (Maybe a) -> m Bool isJustM = Monad.liftM Maybe.isJust + +andM, orM :: (Monad m) => m [Bool] -> m Bool +andM = Monad.liftM and +orM = Monad.liftM or + +mapAccumLM :: (Monad m) => (acc -> x -> m (acc, y)) -> acc -> [x] -> m (acc, [y]) +mapAccumLM _ s [] = return (s, []) +mapAccumLM f s (x:xs) = do + (s', y ) <- f s x + (s'', ys) <- mapAccumLM f s' xs + return (s'', y:ys)