/ghc-7.0.4/compiler/basicTypes/NameEnv.lhs
http://picorec.googlecode.com/ · Haskell · 83 lines · 71 code · 10 blank · 2 comment · 0 complexity · 151a8b5aa9438de40a5c991a7a5cd7ab MD5 · raw file
- %
- % (c) The University of Glasgow 2006
- % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
- %
- \section[NameEnv]{@NameEnv@: name environments}
- \begin{code}
- module NameEnv (
- -- * 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,
- elemNameEnv, mapNameEnv
- ) where
- #include "HsVersions.h"
- import Name
- import Unique
- import UniqFM
- import Maybes
- \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]
- 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
- unitNameEnv :: Name -> a -> NameEnv a
- lookupNameEnv :: NameEnv a -> Name -> Maybe a
- lookupNameEnv_NF :: NameEnv a -> Name -> a
- foldNameEnv :: (a -> b -> b) -> b -> NameEnv a -> b
- filterNameEnv :: (elt -> Bool) -> NameEnv elt -> NameEnv elt
- mapNameEnv :: (elt1 -> elt2) -> NameEnv elt1 -> NameEnv elt2
- 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_NF env n = expectJust "lookupNameEnv_NF" (lookupNameEnv env n)
- \end{code}