Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Definition of Scheduler
as a way to control application of rewrite rules.
The BackoffScheduler
is a scheduler which implements exponential rule backoff
and is used by default in equalitySaturation
Documentation
class Scheduler s where Source #
A Scheduler
determines whether a certain rewrite rule is banned from
being used based on statistics it defines and collects on applied rewrite
rules.
:: Int | Iteration we're in |
-> Int | Index of rewrite rule we're updating |
-> Maybe (Stat s) | Current stat for this rewrite rule (we already got it so no point in doing a lookup again) |
-> IntMap (Stat s) | The current stats map |
-> [Match] | The list of matches resulting from matching this rewrite rule |
-> IntMap (Stat s) | The updated map with new stats |
Scheduler: update stats
Instances
Scheduler BackoffScheduler Source # | |
Defined in Data.Equality.Saturation.Scheduler type Stat BackoffScheduler Source # updateStats :: Int -> Int -> Maybe (Stat BackoffScheduler) -> IntMap (Stat BackoffScheduler) -> [Match] -> IntMap (Stat BackoffScheduler) Source # |
data BackoffScheduler Source #
A Scheduler
that implements exponentional rule backoff.
For each rewrite, there exists a configurable initial match limit. If a rewrite search yield more than this limit, then we ban this rule for number of iterations, double its limit, and double the time it will be banned next time.
This seems effective at preventing explosive rules like associativity from taking an unfair amount of resources.
Originaly in egg
Instances
Scheduler BackoffScheduler Source # | |
Defined in Data.Equality.Saturation.Scheduler type Stat BackoffScheduler Source # updateStats :: Int -> Int -> Maybe (Stat BackoffScheduler) -> IntMap (Stat BackoffScheduler) -> [Match] -> IntMap (Stat BackoffScheduler) Source # | |
type Stat BackoffScheduler Source # | |
Defined in Data.Equality.Saturation.Scheduler |