diff options
| author | simonpj <unknown> | 2001-03-08 13:33:23 +0000 |
|---|---|---|
| committer | simonpj <unknown> | 2001-03-08 13:33:23 +0000 |
| commit | f0b635a2a96346186f55778d28d6895c80d9be8a (patch) | |
| tree | c6d7a6e119b31834632e00a06604f204af713f97 | |
| parent | 51a571c0f5b0201ea53bec60fcaafb78c01c017e (diff) | |
| download | haskell-f0b635a2a96346186f55778d28d6895c80d9be8a.tar.gz | |
[project @ 2001-03-08 13:33:23 by simonpj]
Add NameEnv!
| -rw-r--r-- | ghc/compiler/basicTypes/NameEnv.lhs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/ghc/compiler/basicTypes/NameEnv.lhs b/ghc/compiler/basicTypes/NameEnv.lhs new file mode 100644 index 0000000000..68720420c5 --- /dev/null +++ b/ghc/compiler/basicTypes/NameEnv.lhs @@ -0,0 +1,66 @@ +% +% (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, foldNameEnv, filterNameEnv, + plusNameEnv, plusNameEnv_C, extendNameEnv, extendNameEnvList, + lookupNameEnv, lookupNameEnv_NF, delFromNameEnv, elemNameEnv + ) where + +#include "HsVersions.h" + +import Name ( Name ) +import UniqFM +import Maybes ( expectJust ) +\end{code} + +%************************************************************************ +%* * +\subsection{Name environment} +%* * +%************************************************************************ + +\begin{code} +type NameEnv a = UniqFM a -- Domain is Name + +emptyNameEnv :: NameEnv a +mkNameEnv :: [(Name,a)] -> NameEnv a +nameEnvElts :: NameEnv a -> [a] +extendNameEnv_C :: (a->a->a) -> NameEnv a -> Name -> a -> NameEnv a +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 +delFromNameEnv :: NameEnv a -> Name -> NameEnv a +elemNameEnv :: Name -> NameEnv a -> Bool +unitNameEnv :: Name -> a -> NameEnv a +lookupNameEnv :: NameEnv a -> Name -> Maybe a +lookupNameEnv_NF :: NameEnv a -> Name -> a +mapNameEnv :: (a->b) -> NameEnv a -> NameEnv b +foldNameEnv :: (a -> b -> b) -> b -> NameEnv a -> b +filterNameEnv :: (elt -> Bool) -> NameEnv elt -> NameEnv elt + +emptyNameEnv = emptyUFM +foldNameEnv = foldUFM +mkNameEnv = listToUFM +nameEnvElts = eltsUFM +extendNameEnv_C = addToUFM_C +extendNameEnv = addToUFM +plusNameEnv = plusUFM +plusNameEnv_C = plusUFM_C +extendNameEnvList= addListToUFM +delFromNameEnv = delFromUFM +elemNameEnv = elemUFM +mapNameEnv = mapUFM +unitNameEnv = unitUFM +filterNameEnv = filterUFM + +lookupNameEnv = lookupUFM +lookupNameEnv_NF env n = expectJust "lookupNameEnv_NF" (lookupUFM env n) +\end{code} + |
