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