From: Matthijs Kooijman Date: Wed, 19 Aug 2009 12:35:06 +0000 (+0200) Subject: Add mapAccumLM helper function. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=7d3ab3315462e18a84e6d0312dd3c444292e43bb;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git Add mapAccumLM helper function. --- diff --git "a/c\316\273ash/CLasH/Utils.hs" "b/c\316\273ash/CLasH/Utils.hs" index 822bd55..94da854 100644 --- "a/c\316\273ash/CLasH/Utils.hs" +++ "b/c\316\273ash/CLasH/Utils.hs" @@ -50,3 +50,10 @@ 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)