%
-% (c) The AQUA Project, Glasgow University, 1994-1996
+% (c) The AQUA Project, Glasgow University, 1994-1998
%
\section[FiniteMap]{An implementation of finite maps}
, bagToFM
, FiniteSet, emptySet, mkSet, isEmptySet
- , elementOf, setToList, union, minusSet
+ , elementOf, setToList, union, insert, minusSet
) where
#define OUTPUTABLE_key {--}
#endif
-import {-# SOURCE #-} Name
+import {-# SOURCE #-} Name ( Name )
import GlaExts
import FastString
import Maybes
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
-- (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
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]
minusSet = minusFM
setToList = keysFM
union = plusFM
-
+insert s v = addToFM s v ()
\end{code}
%************************************************************************