Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Optimizer rule and ruleset definitions.
Synopsis
- newtype Rule = Rule {}
- data OptimizationStage
- newtype Ruleset = Ruleset {}
- rulesAtPrio :: OptimizationStage -> Ruleset -> [Rule]
- insertRuleAtPrio :: OptimizationStage -> Rule -> Ruleset -> Ruleset
- clearRulesAtPrio :: OptimizationStage -> Ruleset -> Ruleset
- alterRulesAtPrio :: ([Rule] -> [Rule]) -> OptimizationStage -> Ruleset -> Ruleset
Documentation
data OptimizationStage Source #
Optimization stages. Stages are run in first to last order, each stage has
an Int
argument, which allows splitting each stage into sub-stages, which
will run lowest index to highest. All default rules use sub-stage 0
.
OptimizationStagePrepare Int | |
OptimizationStageMain Int | Main optimisation stage, except rules that would interfere with other rules. |
OptimizationStageMainExtended Int | All main stage rules. |
OptimizationStageFixup Int | Post main stage fixups. |
OptimizationStageRollAdjacent Int | Main stage rules unroll |
Instances
Eq OptimizationStage Source # | |
Defined in Morley.Michelson.Optimizer.Internal.Ruleset (==) :: OptimizationStage -> OptimizationStage -> Bool # (/=) :: OptimizationStage -> OptimizationStage -> Bool # | |
Ord OptimizationStage Source # | |
Defined in Morley.Michelson.Optimizer.Internal.Ruleset compare :: OptimizationStage -> OptimizationStage -> Ordering # (<) :: OptimizationStage -> OptimizationStage -> Bool # (<=) :: OptimizationStage -> OptimizationStage -> Bool # (>) :: OptimizationStage -> OptimizationStage -> Bool # (>=) :: OptimizationStage -> OptimizationStage -> Bool # max :: OptimizationStage -> OptimizationStage -> OptimizationStage # min :: OptimizationStage -> OptimizationStage -> OptimizationStage # | |
Buildable OptimizationStage Source # | |
Defined in Morley.Michelson.Optimizer.Internal.Ruleset build :: OptimizationStage -> Doc buildList :: [OptimizationStage] -> Doc |
A set of optimization stages. Rules at the same sub-stage are applied in
arbitrary order. See OptimizationStage
for explanation of sub-stages.
Default
ruleset is empty.
rulesAtPrio :: OptimizationStage -> Ruleset -> [Rule] Source #
Get rules for a given priority as a list.
insertRuleAtPrio :: OptimizationStage -> Rule -> Ruleset -> Ruleset Source #
Insert a single rule at a given priority without touching other rules.
clearRulesAtPrio :: OptimizationStage -> Ruleset -> Ruleset Source #
Remove the stage with the given priority.
alterRulesAtPrio :: ([Rule] -> [Rule]) -> OptimizationStage -> Ruleset -> Ruleset Source #
Alter all stage rules for a given priority.