2 % (c) The University of Glasgow 2006
3 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
5 \section[NameEnv]{@NameEnv@: name environments}
9 -- * Var, Id and TyVar environments (maps)
12 -- ** Manipulating these environments
14 emptyNameEnv, unitNameEnv, nameEnvElts, nameEnvUniqueElts,
15 extendNameEnv_C, extendNameEnv_Acc, extendNameEnv,
16 extendNameEnvList, extendNameEnvList_C,
17 foldNameEnv, filterNameEnv,
18 plusNameEnv, plusNameEnv_C,
19 lookupNameEnv, lookupNameEnv_NF, delFromNameEnv, delListFromNameEnv,
20 elemNameEnv, mapNameEnv
23 #include "HsVersions.h"
31 %************************************************************************
33 \subsection{Name environment}
35 %************************************************************************
38 type NameEnv a = UniqFM a -- Domain is Name
40 emptyNameEnv :: NameEnv a
41 mkNameEnv :: [(Name,a)] -> NameEnv a
42 nameEnvElts :: NameEnv a -> [a]
43 nameEnvUniqueElts :: NameEnv a -> [(Unique, a)]
44 extendNameEnv_C :: (a->a->a) -> NameEnv a -> Name -> a -> NameEnv a
45 extendNameEnv_Acc :: (a->b->b) -> (a->b) -> NameEnv b -> Name -> a -> NameEnv b
46 extendNameEnv :: NameEnv a -> Name -> a -> NameEnv a
47 plusNameEnv :: NameEnv a -> NameEnv a -> NameEnv a
48 plusNameEnv_C :: (a->a->a) -> NameEnv a -> NameEnv a -> NameEnv a
49 extendNameEnvList :: NameEnv a -> [(Name,a)] -> NameEnv a
50 extendNameEnvList_C :: (a->a->a) -> NameEnv a -> [(Name,a)] -> NameEnv a
51 delFromNameEnv :: NameEnv a -> Name -> NameEnv a
52 delListFromNameEnv :: NameEnv a -> [Name] -> NameEnv a
53 elemNameEnv :: Name -> NameEnv a -> Bool
54 unitNameEnv :: Name -> a -> NameEnv a
55 lookupNameEnv :: NameEnv a -> Name -> Maybe a
56 lookupNameEnv_NF :: NameEnv a -> Name -> a
57 foldNameEnv :: (a -> b -> b) -> b -> NameEnv a -> b
58 filterNameEnv :: (elt -> Bool) -> NameEnv elt -> NameEnv elt
59 mapNameEnv :: (elt1 -> elt2) -> NameEnv elt1 -> NameEnv elt2
61 nameEnvElts x = eltsUFM x
62 emptyNameEnv = emptyUFM
63 unitNameEnv x y = unitUFM x y
64 extendNameEnv x y z = addToUFM x y z
65 extendNameEnvList x l = addListToUFM x l
66 lookupNameEnv x y = lookupUFM x y
67 mkNameEnv l = listToUFM l
68 elemNameEnv x y = elemUFM x y
69 foldNameEnv a b c = foldUFM a b c
70 plusNameEnv x y = plusUFM x y
71 plusNameEnv_C f x y = plusUFM_C f x y
72 extendNameEnv_C f x y z = addToUFM_C f x y z
73 mapNameEnv f x = mapUFM f x
74 nameEnvUniqueElts x = ufmToList x
75 extendNameEnv_Acc x y z a b = addToUFM_Acc x y z a b
76 extendNameEnvList_C x y z = addListToUFM_C x y z
77 delFromNameEnv x y = delFromUFM x y
78 delListFromNameEnv x y = delListFromUFM x y
79 filterNameEnv x y = filterUFM x y
81 lookupNameEnv_NF env n = expectJust "lookupNameEnv_NF" (lookupNameEnv env n)