| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||
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#globalvslocal), 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.3.0 |