Revert "Batch merge"
[ghc.git] / compiler / utils / FiniteMap.hs
1 -- Some extra functions to extend Data.Map
2
3 module FiniteMap (
4 insertList,
5 insertListWith,
6 deleteList,
7 foldRight, foldRightWithKey
8 ) where
9
10 import GhcPrelude
11
12 import Data.Map (Map)
13 import qualified Data.Map as Map
14
15 insertList :: Ord key => [(key,elt)] -> Map key elt -> Map key elt
16 insertList xs m = foldl' (\m (k, v) -> Map.insert k v m) m xs
17
18 insertListWith :: Ord key
19 => (elt -> elt -> elt)
20 -> [(key,elt)]
21 -> Map key elt
22 -> Map key elt
23 insertListWith f xs m0 = foldl' (\m (k, v) -> Map.insertWith f k v m) m0 xs
24
25 deleteList :: Ord key => [key] -> Map key elt -> Map key elt
26 deleteList ks m = foldl' (flip Map.delete) m ks
27
28 foldRight :: (elt -> a -> a) -> a -> Map key elt -> a
29 foldRight = Map.foldr
30 foldRightWithKey :: (key -> elt -> a -> a) -> a -> Map key elt -> a
31 foldRightWithKey = Map.foldrWithKey