projects
/
matthijs
/
master-project
/
cλash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add allM and anyM functions.
[matthijs/master-project/cλash.git]
/
cλash
/
CLasH
/
Utils.hs
diff --git
a/cλash/CLasH/Utils.hs
b/cλash/CLasH/Utils.hs
index 51c6ebfc906281c79e74d5becc61fa289a3db143..2966757a038b1d2fefd6a9db51547a0bcf8d0bff 100644
(file)
--- a/
cλash/CLasH/Utils.hs
+++ b/
cλash/CLasH/Utils.hs
@@
-3,14
+3,10
@@
module CLasH.Utils where
-- Standard Imports
import qualified Maybe
import Data.Accessor
-- Standard Imports
import qualified Maybe
import Data.Accessor
-import Data.Accessor.Monad.Trans.State as MonadState
+import
qualified
Data.Accessor.Monad.Trans.State as MonadState
import qualified Data.Map as Map
import qualified Control.Monad as Monad
import qualified Control.Monad.Trans.State as State
import qualified Data.Map as Map
import qualified Control.Monad as Monad
import qualified Control.Monad.Trans.State as State
-
--- GHC API
-
--- Local Imports
-- Make a caching version of a stateful computatation.
makeCached :: (Monad m, Ord k) =>
-- Make a caching version of a stateful computatation.
makeCached :: (Monad m, Ord k) =>
@@
-52,6
+48,12
@@
andM, orM :: (Monad m) => m [Bool] -> m Bool
andM = Monad.liftM and
orM = Monad.liftM or
andM = Monad.liftM and
orM = Monad.liftM or
+-- | Monadic versions of any and all. We reimplement them, since there
+-- is no ready-made lifting function for them.
+allM, anyM :: (Monad m) => (a -> m Bool) -> [a] -> m Bool
+allM f = andM . (mapM f)
+anyM f = orM . (mapM f)
+
mapAccumLM :: (Monad m) => (acc -> x -> m (acc, y)) -> acc -> [x] -> m (acc, [y])
mapAccumLM _ s [] = return (s, [])
mapAccumLM f s (x:xs) = do
mapAccumLM :: (Monad m) => (acc -> x -> m (acc, y)) -> acc -> [x] -> m (acc, [y])
mapAccumLM _ s [] = return (s, [])
mapAccumLM f s (x:xs) = do