| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
DDC.Core.Transform.Rewrite
Description
Apply rewrite rules.
- data RewriteRule a n = RewriteRule {
- ruleBinds :: [(BindMode, Bind n)]
- ruleConstraints :: [Type n]
- ruleLeft :: Exp a n
- ruleLeftHole :: Maybe (Exp a n)
- ruleRight :: Exp a n
- ruleWeakEff :: Maybe (Effect n)
- ruleWeakClo :: [Exp a n]
- ruleFreeVars :: [Bound n]
- rewriteModule :: (Show a, Show n, Ord n, Pretty n) => [NamedRewriteRule a n] -> Module a n -> Module a n
- rewriteX :: (Show a, Show n, Ord n, Pretty n) => [NamedRewriteRule a n] -> Exp a n -> TransformResult (Exp a n)
Documentation
data RewriteRule a n Source #
A rewrite rule. For example:
RULE [r1 r2 r3 : %] (x : Int r1)
. addInt [:r1 r2 r3:] x (0 [r2] ()
= copyInt [:r1 r3:] x
Constructors
| RewriteRule | |
Fields
| |
Instances
| Reannotate RewriteRule Source # | Allow the expressions and anything else with annotations to be reannotated |
| (Eq a, Eq n) => Eq (RewriteRule a n) Source # | |
| (Show a, Show n) => Show (RewriteRule a n) Source # | |
| (Pretty n, Eq n) => Pretty (RewriteRule a n) Source # | |