X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FFiniteMap.lhs;h=abcdc2ac78f339b31e927cc834b7a7e9b6cdc648;hb=62a6dd852deb4efd4ac99b8e8c5a9b0355e9e9df;hp=cf08d7cb96120bf89e29373c8f24772c46536824;hpb=b9f37aee698c6ccf1ee183906836f8185aa6c2e2;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/FiniteMap.lhs b/ghc/compiler/utils/FiniteMap.lhs index cf08d7c..abcdc2a 100644 --- a/ghc/compiler/utils/FiniteMap.lhs +++ b/ghc/compiler/utils/FiniteMap.lhs @@ -1,5 +1,5 @@ % -% (c) The AQUA Project, Glasgow University, 1994-1996 +% (c) The AQUA Project, Glasgow University, 1994-1998 % \section[FiniteMap]{An implementation of finite maps} @@ -46,7 +46,7 @@ module FiniteMap ( , bagToFM , FiniteSet, emptySet, mkSet, isEmptySet - , elementOf, setToList, union, minusSet + , elementOf, setToList, union, insert, minusSet ) where @@ -59,7 +59,7 @@ module FiniteMap ( #define OUTPUTABLE_key {--} #endif -import {-# SOURCE #-} Name +import {-# SOURCE #-} Name ( Name ) import GlaExts import FastString import Maybes @@ -105,6 +105,7 @@ addToFM :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> key -> elt -> Fini addListToFM :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> [(key,elt)] -> FiniteMap key elt -- Combines with previous binding + -- The combining fn goes (old -> new -> new) addToFM_C :: (Ord key OUTPUTABLE_key) => (elt -> elt -> elt) -> FiniteMap key elt -> key -> elt -> FiniteMap key elt @@ -130,8 +131,8 @@ minusFM :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> FiniteMap key elt - -- (minusFM a1 a2) deletes from a1 any bindings which are bound in a2 intersectFM :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt -intersectFM_C :: (Ord key OUTPUTABLE_key) => (elt -> elt -> elt2) - -> FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt2 +intersectFM_C :: (Ord key OUTPUTABLE_key) => (elt1 -> elt2 -> elt3) + -> FiniteMap key elt1 -> FiniteMap key elt2 -> FiniteMap key elt3 -- MAPPING, FOLDING, FILTERING foldFM :: (key -> elt -> a -> a) -> a -> FiniteMap key elt -> a @@ -684,6 +685,7 @@ elementOf :: (Ord key OUTPUTABLE_key) => key -> FiniteSet key -> Bool minusSet :: (Ord key OUTPUTABLE_key) => FiniteSet key -> FiniteSet key -> FiniteSet key setToList :: FiniteSet key -> [key] union :: (Ord key OUTPUTABLE_key) => FiniteSet key -> FiniteSet key -> FiniteSet key +insert :: (Ord key OUTPUTABLE_key) => FiniteSet key -> key -> FiniteSet key emptySet = emptyFM mkSet xs = listToFM [ (x, ()) | x <- xs] @@ -692,7 +694,7 @@ elementOf = elemFM minusSet = minusFM setToList = keysFM union = plusFM - +insert s v = addToFM s v () \end{code} %************************************************************************