%
+% (c) The University of Glasgow 2006
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
\section[NameEnv]{@NameEnv@: name environments}
\begin{code}
module NameEnv (
- NameEnv, mkNameEnv,
- emptyNameEnv, unitNameEnv, nameEnvElts,
- extendNameEnv_C, extendNameEnv_Acc, extendNameEnv, extendNameEnvList,
+ -- * Var, Id and TyVar environments (maps)
+ NameEnv,
+
+ -- ** Manipulating these environments
+ mkNameEnv,
+ emptyNameEnv, unitNameEnv, nameEnvElts, nameEnvUniqueElts,
+ extendNameEnv_C, extendNameEnv_Acc, extendNameEnv,
+ extendNameEnvList, extendNameEnvList_C,
foldNameEnv, filterNameEnv,
plusNameEnv, plusNameEnv_C,
lookupNameEnv, lookupNameEnv_NF, delFromNameEnv, delListFromNameEnv,
#include "HsVersions.h"
-import Name ( Name )
+import Name
+import Unique
import UniqFM
-import Maybes ( expectJust )
+import Maybes
\end{code}
%************************************************************************
emptyNameEnv :: NameEnv a
mkNameEnv :: [(Name,a)] -> NameEnv a
nameEnvElts :: NameEnv a -> [a]
+nameEnvUniqueElts :: NameEnv a -> [(Unique, a)]
extendNameEnv_C :: (a->a->a) -> NameEnv a -> Name -> a -> NameEnv a
extendNameEnv_Acc :: (a->b->b) -> (a->b) -> NameEnv b -> Name -> a -> NameEnv b
extendNameEnv :: NameEnv a -> Name -> a -> NameEnv a
plusNameEnv :: NameEnv a -> NameEnv a -> NameEnv a
plusNameEnv_C :: (a->a->a) -> NameEnv a -> NameEnv a -> NameEnv a
extendNameEnvList :: NameEnv a -> [(Name,a)] -> NameEnv a
+extendNameEnvList_C :: (a->a->a) -> NameEnv a -> [(Name,a)] -> NameEnv a
delFromNameEnv :: NameEnv a -> Name -> NameEnv a
delListFromNameEnv :: NameEnv a -> [Name] -> NameEnv a
elemNameEnv :: Name -> NameEnv a -> Bool
filterNameEnv :: (elt -> Bool) -> NameEnv elt -> NameEnv elt
mapNameEnv :: (elt1 -> elt2) -> NameEnv elt1 -> NameEnv elt2
-emptyNameEnv = emptyUFM
-foldNameEnv = foldUFM
-mkNameEnv = listToUFM
-nameEnvElts = eltsUFM
-extendNameEnv_C = addToUFM_C
-extendNameEnv_Acc = addToUFM_Acc
-extendNameEnv = addToUFM
-plusNameEnv = plusUFM
-plusNameEnv_C = plusUFM_C
-extendNameEnvList = addListToUFM
-delFromNameEnv = delFromUFM
-delListFromNameEnv = delListFromUFM
-elemNameEnv = elemUFM
-unitNameEnv = unitUFM
-filterNameEnv = filterUFM
-mapNameEnv = mapUFM
+nameEnvElts x = eltsUFM x
+emptyNameEnv = emptyUFM
+unitNameEnv x y = unitUFM x y
+extendNameEnv x y z = addToUFM x y z
+extendNameEnvList x l = addListToUFM x l
+lookupNameEnv x y = lookupUFM x y
+mkNameEnv l = listToUFM l
+elemNameEnv x y = elemUFM x y
+foldNameEnv a b c = foldUFM a b c
+plusNameEnv x y = plusUFM x y
+plusNameEnv_C f x y = plusUFM_C f x y
+extendNameEnv_C f x y z = addToUFM_C f x y z
+mapNameEnv f x = mapUFM f x
+nameEnvUniqueElts x = ufmToList x
+extendNameEnv_Acc x y z a b = addToUFM_Acc x y z a b
+extendNameEnvList_C x y z = addListToUFM_C x y z
+delFromNameEnv x y = delFromUFM x y
+delListFromNameEnv x y = delListFromUFM x y
+filterNameEnv x y = filterUFM x y
-lookupNameEnv = lookupUFM
-lookupNameEnv_NF env n = expectJust "lookupNameEnv_NF" (lookupUFM env n)
+lookupNameEnv_NF env n = expectJust "lookupNameEnv_NF" (lookupNameEnv env n)
\end{code}