| |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
Description | |||||||||||||||||||||||||||||||||
Functions for collecting together and applying rewrite rules to a module. The CoreRule datatype itself is declared elsewhere. | |||||||||||||||||||||||||||||||||
Synopsis | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
RuleBase | |||||||||||||||||||||||||||||||||
type RuleBase = NameEnv [CoreRule] | |||||||||||||||||||||||||||||||||
Gathers a collection of CoreRules. Maps (the name of) an Id to its rules | |||||||||||||||||||||||||||||||||
Constructing | |||||||||||||||||||||||||||||||||
emptyRuleBase | |||||||||||||||||||||||||||||||||
mkRuleBase :: [CoreRule] -> RuleBase | |||||||||||||||||||||||||||||||||
extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase | |||||||||||||||||||||||||||||||||
unionRuleBase :: RuleBase -> RuleBase -> RuleBase | |||||||||||||||||||||||||||||||||
pprRuleBase :: RuleBase -> SDoc | |||||||||||||||||||||||||||||||||
Checking rule applications | |||||||||||||||||||||||||||||||||
ruleCheckProgram | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
Manipulating SpecInfo rules | |||||||||||||||||||||||||||||||||
mkSpecInfo :: [CoreRule] -> SpecInfo | |||||||||||||||||||||||||||||||||
Make a SpecInfo containing a number of CoreRules, suitable for putting into an IdInfo | |||||||||||||||||||||||||||||||||
extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo | |||||||||||||||||||||||||||||||||
addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo | |||||||||||||||||||||||||||||||||
addIdSpecialisations :: Id -> [CoreRule] -> Id | |||||||||||||||||||||||||||||||||
Misc. CoreRule helpers | |||||||||||||||||||||||||||||||||
rulesOfBinds :: [CoreBind] -> [CoreRule] | |||||||||||||||||||||||||||||||||
Gather all the rules for locally bound identifiers from the supplied bindings | |||||||||||||||||||||||||||||||||
getRules :: RuleBase -> Id -> [CoreRule] | |||||||||||||||||||||||||||||||||
pprRulesForUser :: [CoreRule] -> SDoc | |||||||||||||||||||||||||||||||||
lookupRule :: (Activation -> Bool) -> InScopeSet -> Id -> [CoreExpr] -> [CoreRule] -> Maybe (CoreRule, CoreExpr) | |||||||||||||||||||||||||||||||||
The main rule matching function. Attempts to apply all (active) supplied rules to this instance of an application in a given context, returning the rule applied and the resulting expression if successful. | |||||||||||||||||||||||||||||||||
mkLocalRule :: RuleName -> Activation -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule | |||||||||||||||||||||||||||||||||
Used to make CoreRule for an Id defined in the module being compiled. See also CoreRule | |||||||||||||||||||||||||||||||||
roughTopNames :: [CoreExpr] -> [Maybe Name] | |||||||||||||||||||||||||||||||||
Find the "top" free names of several expressions. Such names are either: 1. The function finally being applied to in an application chain (if that name is a GlobalId: see Var), or 2. The TyCon if the expression is a Type This is used for the fast-match-check for rules; if the top names don't match, the rest can't | |||||||||||||||||||||||||||||||||
Produced by Haddock version 2.4.2 |