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