2 % (c) The AQUA Project, Glasgow University, 1994
4 \section[TyVarEnv]{Lookup tables that have @TyVar@ keys}
6 An interface to the @FiniteMap@ machinery, which exports
7 a ``personality'' the same as that of the old @TyVarEnv@ module.
10 #include "HsVersions.h"
13 TyVarEnv(..), -- abstract: NOT
15 TypeEnv(..), -- most common/important kind of TyVarEnv
19 nullTyVarEnv, growTyVarEnvList,
23 -- and to make the interface self-sufficient...
25 TyVar, Unique, Maybe(..)
27 #ifdef USE_ATTACK_PRAGMAS
28 , addToUFM, plusUFM_C, delListFromUFM, delFromUFM, plusUFM,
29 lookupUFM, mapUFM, minusUFM, listToUFM, emptyUFM, eltsUFM,
37 import Maybes ( Maybe(..) )
39 import Unique ( Unique, u2i )
44 type TyVarEnv elt = UniqFM elt
46 type TypeEnv = TyVarEnv UniType -- most common flavo(u)r
51 mkTyVarEnv :: [(TyVar, a)] -> TyVarEnv a
52 addOneToTyVarEnv :: TyVarEnv a -> TyVar -> a -> TyVarEnv a
53 growTyVarEnvList :: TyVarEnv a -> [(TyVar, a)] -> TyVarEnv a
54 isNullTyVarEnv :: TyVarEnv a -> Bool
55 lookupTyVarEnv :: TyVarEnv a -> TyVar -> Maybe a
56 nullTyVarEnv :: TyVarEnv a
60 mkTyVarEnv stuff = listToUFM stuff
62 addOneToTyVarEnv env id elt = addToUFM env id elt
64 growTyVarEnvList env pairs = plusUFM env (listToUFM pairs)
66 isNullTyVarEnv env = sizeUFM env == 0
68 lookupTyVarEnv env id = lookupUFM env id
70 nullTyVarEnv = emptyUFM