X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fenvs%2FTyVarEnv.lhs;fp=ghc%2Fcompiler%2Fenvs%2FTyVarEnv.lhs;h=421b4a2121ee512424b0c6a94e3331cc87e23d5a;hb=e7d21ee4f8ac907665a7e170c71d59e13a01da09;hp=0000000000000000000000000000000000000000;hpb=e48474bff05e6cfb506660420f025f694c870d38;p=ghc-hetmet.git diff --git a/ghc/compiler/envs/TyVarEnv.lhs b/ghc/compiler/envs/TyVarEnv.lhs new file mode 100644 index 0000000..421b4a2 --- /dev/null +++ b/ghc/compiler/envs/TyVarEnv.lhs @@ -0,0 +1,71 @@ +% +% (c) The AQUA Project, Glasgow University, 1994 +% +\section[TyVarEnv]{Lookup tables that have @TyVar@ keys} + +An interface to the @FiniteMap@ machinery, which exports +a ``personality'' the same as that of the old @TyVarEnv@ module. + +\begin{code} +#include "HsVersions.h" + +module TyVarEnv ( + TyVarEnv(..), -- abstract: NOT + + TypeEnv(..), -- most common/important kind of TyVarEnv + + mkTyVarEnv, + lookupTyVarEnv, + nullTyVarEnv, growTyVarEnvList, + isNullTyVarEnv, + addOneToTyVarEnv, + + -- and to make the interface self-sufficient... + UniqFM, + TyVar, Unique, Maybe(..) + +#ifdef USE_ATTACK_PRAGMAS + , addToUFM, plusUFM_C, delListFromUFM, delFromUFM, plusUFM, + lookupUFM, mapUFM, minusUFM, listToUFM, emptyUFM, eltsUFM, + singletonUFM, + u2i +#endif + ) where + +import AbsUniType +import UniqFM +import Maybes ( Maybe(..) ) +import Outputable +import Unique ( Unique, u2i ) +import Util +\end{code} + +\begin{code} +type TyVarEnv elt = UniqFM elt + +type TypeEnv = TyVarEnv UniType -- most common flavo(u)r +\end{code} + +Signatures: +\begin{code} +mkTyVarEnv :: [(TyVar, a)] -> TyVarEnv a +addOneToTyVarEnv :: TyVarEnv a -> TyVar -> a -> TyVarEnv a +growTyVarEnvList :: TyVarEnv a -> [(TyVar, a)] -> TyVarEnv a +isNullTyVarEnv :: TyVarEnv a -> Bool +lookupTyVarEnv :: TyVarEnv a -> TyVar -> Maybe a +nullTyVarEnv :: TyVarEnv a +\end{code} + +\begin{code} +mkTyVarEnv stuff = listToUFM stuff + +addOneToTyVarEnv env id elt = addToUFM env id elt + +growTyVarEnvList env pairs = plusUFM env (listToUFM pairs) + +isNullTyVarEnv env = sizeUFM env == 0 + +lookupTyVarEnv env id = lookupUFM env id + +nullTyVarEnv = emptyUFM +\end{code}