diff options
Diffstat (limited to 'compiler/GHC/Core')
-rw-r--r-- | compiler/GHC/Core/FamInstEnv.hs | 4 | ||||
-rw-r--r-- | compiler/GHC/Core/RoughMap.hs | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/compiler/GHC/Core/FamInstEnv.hs b/compiler/GHC/Core/FamInstEnv.hs index e80c210ac5..e99d2e0f6a 100644 --- a/compiler/GHC/Core/FamInstEnv.hs +++ b/compiler/GHC/Core/FamInstEnv.hs @@ -18,6 +18,7 @@ module GHC.Core.FamInstEnv ( -- * Family instance environment FamInstEnvs, FamInstEnv, emptyFamInstEnv, emptyFamInstEnvs, unionFamInstEnv, extendFamInstEnv, extendFamInstEnvList, + traverse_FamInstEnv, famInstEnvElts, famInstEnvSize, familyInstances, -- * CoAxioms @@ -384,6 +385,9 @@ emptyFamInstEnvs = (emptyFamInstEnv, emptyFamInstEnv) emptyFamInstEnv :: FamInstEnv emptyFamInstEnv = FamIE 0 emptyRM +traverse_FamInstEnv :: (FamInst -> m ()) -> FamInstEnv -> m () +traverse_FamInstEnv f (FamIE _ rm) = traverse_RM rm + famInstEnvElts :: FamInstEnv -> [FamInst] famInstEnvElts (FamIE _ rm) = elemsRM rm -- See Note [FamInstEnv determinism] diff --git a/compiler/GHC/Core/RoughMap.hs b/compiler/GHC/Core/RoughMap.hs index 4e55075e13..46cfe2bf45 100644 --- a/compiler/GHC/Core/RoughMap.hs +++ b/compiler/GHC/Core/RoughMap.hs @@ -22,6 +22,7 @@ module GHC.Core.RoughMap , elemsRM , sizeRM , foldRM + , traverse_RM , unionRM ) where @@ -208,6 +209,9 @@ dropEmpty rm = Just rm elemsRM :: RoughMap a -> [a] elemsRM = foldRM (:) [] +traverse_RM :: Monad m => (a -> m ()) -> RoughMap a -> m () +traverse_RM f = foldRM (\x rest -> f x >> rest) (return ()) + foldRM :: (a -> b -> b) -> b -> RoughMap a -> b foldRM f = go where |