VarEnv, IdEnv, TyVarEnv,
emptyVarEnv, unitVarEnv, mkVarEnv,
elemVarEnv, rngVarEnv,
- extendVarEnv, extendVarEnvList,
+ extendVarEnv, extendVarEnv_C, extendVarEnvList,
plusVarEnv, plusVarEnv_C,
delVarEnvList, delVarEnv,
lookupVarEnv, lookupVarEnv_NF, lookupWithDefaultVarEnv,
-- SubstEnvs
SubstEnv, TyVarSubstEnv, SubstResult(..),
- emptySubstEnv,
+ emptySubstEnv, substEnvEnv, elemSubstEnv,
mkSubstEnv, lookupSubstEnv, extendSubstEnv, extendSubstEnvList,
delSubstEnv, delSubstEnvList, noTypeSubst, isEmptySubstEnv
) where
\begin{code}
type TidyEnv = (TidyOccEnv, VarEnv Var)
+
+emptyTidyEnv :: TidyEnv
emptyTidyEnv = (emptyTidyOccEnv, emptyVarEnv)
\end{code}
noTypeSubst :: SubstEnv -> Bool
noTypeSubst (SE _ nt) = nt
+substEnvEnv :: SubstEnv -> VarEnv SubstResult
+substEnvEnv (SE env _) = env
+
type TyVarSubstEnv = SubstEnv -- of the form (DoneTy ty) *only*
data SubstResult
lookupSubstEnv :: SubstEnv -> Var -> Maybe SubstResult
lookupSubstEnv (SE s _) v = lookupVarEnv s v
+elemSubstEnv :: Var -> SubstEnv -> Bool
+elemSubstEnv v (SE s _) = elemVarEnv v s
+
extendSubstEnv :: SubstEnv -> Var -> SubstResult -> SubstEnv
extendSubstEnv (SE s nt) v r = SE (extendVarEnv s v r) (noTys r nt)
zipVarEnv :: [Var] -> [a] -> VarEnv a
unitVarEnv :: Var -> a -> VarEnv a
extendVarEnv :: VarEnv a -> Var -> a -> VarEnv a
+extendVarEnv_C :: (a->a->a) -> VarEnv a -> Var -> a -> VarEnv a
plusVarEnv :: VarEnv a -> VarEnv a -> VarEnv a
extendVarEnvList :: VarEnv a -> [(Var, a)] -> VarEnv a
\begin{code}
elemVarEnv = elemUFM
extendVarEnv = addToUFM
+extendVarEnv_C = addToUFM_C
extendVarEnvList = addListToUFM
plusVarEnv_C = plusUFM_C
delVarEnvList = delListFromUFM