Safe Haskell | None |
---|---|
Language | Haskell98 |
A module concerned with finding the free variables of an expression.
- exprFreeVars :: CoreExpr -> VarSet
- exprFreeIds :: CoreExpr -> IdSet
- exprsFreeVars :: [CoreExpr] -> VarSet
- bindFreeVars :: CoreBind -> VarSet
- type InterestingVarFun = Var -> Bool
- exprSomeFreeVars :: InterestingVarFun -> CoreExpr -> VarSet
- exprsSomeFreeVars :: InterestingVarFun -> [CoreExpr] -> VarSet
- varTypeTyVars :: Var -> TyVarSet
- idUnfoldingVars :: Id -> VarSet
- idFreeVars :: Id -> VarSet
- idRuleAndUnfoldingVars :: Id -> VarSet
- idRuleVars :: Id -> VarSet
- idRuleRhsVars :: (Activation -> Bool) -> Id -> VarSet
- stableUnfoldingVars :: Unfolding -> Maybe VarSet
- ruleRhsFreeVars :: CoreRule -> VarSet
- rulesFreeVars :: [CoreRule] -> VarSet
- ruleLhsOrphNames :: CoreRule -> NameSet
- ruleLhsFreeIds :: CoreRule -> VarSet
- vectsFreeVars :: [CoreVect] -> VarSet
- type CoreExprWithFVs = AnnExpr Id VarSet
- type CoreBindWithFVs = AnnBind Id VarSet
- freeVars :: CoreExpr -> CoreExprWithFVs
- freeVarsOf :: CoreExprWithFVs -> IdSet
Free variables of expressions and binding groups
exprFreeVars :: CoreExpr -> VarSet Source
Find all locally-defined free Ids or type variables in an expression
exprFreeIds :: CoreExpr -> IdSet Source
Find all locally-defined free Ids in an expression
exprsFreeVars :: [CoreExpr] -> VarSet Source
Find all locally-defined free Ids or type variables in several expressions
bindFreeVars :: CoreBind -> VarSet Source
Find all locally defined free Ids in a binding group
Selective free variables of expressions
type InterestingVarFun = Var -> Bool Source
Predicate on possible free variables: returns True
iff the variable is interesting
:: InterestingVarFun | Says which |
-> CoreExpr | |
-> VarSet |
Finds free variables in an expression selected by a predicate
exprsSomeFreeVars :: InterestingVarFun -> [CoreExpr] -> VarSet Source
Finds free variables in several expressions selected by a predicate
Free variables of Rules, Vars and Ids
varTypeTyVars :: Var -> TyVarSet Source
idUnfoldingVars :: Id -> VarSet Source
idFreeVars :: Id -> VarSet Source
idRuleAndUnfoldingVars :: Id -> VarSet Source
idRuleVars :: Id -> VarSet Source
idRuleRhsVars :: (Activation -> Bool) -> Id -> VarSet Source
ruleRhsFreeVars :: CoreRule -> VarSet Source
Those variables free in the right hand side of a rule
rulesFreeVars :: [CoreRule] -> VarSet Source
Those variables free in the right hand side of several rules
ruleLhsOrphNames :: CoreRule -> NameSet Source
ruleLhsOrphNames is used when deciding whether a rule is an orphan. In particular, suppose that T is defined in this module; we want to avoid declaring that a rule like:
fromIntegral T = fromIntegral_T
is an orphan. Of course it isn't, and declaring it an orphan would make the whole module an orphan module, which is bad.
ruleLhsFreeIds :: CoreRule -> VarSet Source
This finds all locally-defined free Ids on the left hand side of a rule
vectsFreeVars :: [CoreVect] -> VarSet Source
Free variables of a vectorisation declaration
Core syntax tree annotation with free variables
type CoreExprWithFVs = AnnExpr Id VarSet Source
Every node in an expression annotated with its (non-global) free variables, both Ids and TyVars
type CoreBindWithFVs = AnnBind Id VarSet Source
Every node in a binding group annotated with its (non-global) free variables, both Ids and TyVars
freeVars :: CoreExpr -> CoreExprWithFVs Source
Annotate a CoreExpr
with its (non-global) free type and value variables at every tree node
freeVarsOf :: CoreExprWithFVs -> IdSet Source
Inverse function to freeVars