| ghc-6.10.4: The GHC API | Contents | Index

CoreFVs

Contents

Free variables of expressions and binding groups
Selective free variables of expressions
Free variables of Rules, Vars and Ids
Core syntax tree annotation with free variables

Description
A module concerned with finding the free variables of an expression.
Synopsis

exprFreeVars :: CoreExpr -> VarSet
exprsFreeVars :: [CoreExpr] -> VarSet
bindFreeVars :: CoreBind -> VarSet
type InterestingVarFun = Var -> Bool
exprSomeFreeVars :: InterestingVarFun -> CoreExpr -> VarSet
exprsSomeFreeVars :: InterestingVarFun -> [CoreExpr] -> VarSet
exprFreeNames :: CoreExpr -> NameSet
exprsFreeNames :: [CoreExpr] -> NameSet
idRuleVars :: Id -> VarSet
idFreeVars :: Id -> VarSet
varTypeTyVars :: Var -> TyVarSet
ruleRhsFreeVars :: CoreRule -> VarSet
rulesFreeVars :: [CoreRule] -> VarSet
ruleLhsFreeNames :: CoreRule -> NameSet
ruleLhsFreeIds :: CoreRule -> 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
Find all locally-defined free Ids or type variables in an expression
exprsFreeVars :: [CoreExpr] -> VarSet
Find all locally-defined free Ids or type variables in several expressions
bindFreeVars :: CoreBind -> VarSet
Find all locally defined free Ids in a binding group
Selective free variables of expressions
type InterestingVarFun = Var -> Bool
Predicate on possible free variables: returns `True` iff the variable is interesting
exprSomeFreeVars

:: InterestingVarFun | Says which `Var`s are interesting
-> CoreExpr |
-> VarSet |
Finds free variables in an expression selected by a predicate

exprsSomeFreeVars :: InterestingVarFun -> [CoreExpr] -> VarSet
Finds free variables in several expressions selected by a predicate
exprFreeNames :: CoreExpr -> NameSet
Finds the free external names of an expression, notably including the names of type constructors (which of course do not show up in `exprFreeVars`).
exprsFreeNames :: [CoreExpr] -> NameSet
Finds the free external names of several expressions: see `exprFreeNames` for details
Free variables of Rules, Vars and Ids
idRuleVars :: Id -> VarSet
idFreeVars :: Id -> VarSet
varTypeTyVars :: Var -> TyVarSet
ruleRhsFreeVars :: CoreRule -> VarSet
Those variables free in the right hand side of a rule
rulesFreeVars :: [CoreRule] -> VarSet
Those variables free in the right hand side of several rules
ruleLhsFreeNames :: CoreRule -> NameSet

Similar to `exprFreeNames`. However, this 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
This finds all locally-defined free Ids on the left hand side of a rule
Core syntax tree annotation with free variables
type CoreExprWithFVs = AnnExpr Id VarSet
Every node in an expression annotated with its (non-global) free variables, both Ids and TyVars
type CoreBindWithFVs = AnnBind Id VarSet
Every node in a binding group annotated with its (non-global) free variables, both Ids and TyVars
freeVars :: CoreExpr -> CoreExprWithFVs
Annotate a `CoreExpr` with its (non-global) free type and value variables at every tree node
freeVarsOf :: CoreExprWithFVs -> IdSet
Inverse function to `freeVars`
Produced by Haddock version 2.4.2