Jikka-5.0.11.1: A transpiler from Python to C++ for competitive programming
Copyright(c) Kimiyuki Onaka 2021
LicenseApache License 2.0
Maintainerkimiyuki95@gmail.com
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Jikka.Core.Language.RewriteRules

Description

 
Synopsis

Documentation

newtype RewriteRule m Source #

Constructors

RewriteRule ([(VarName, Type)] -> Expr -> m (Maybe Expr)) 

Instances

Instances details
Monad m => Semigroup (RewriteRule m) Source # 
Instance details

Defined in Jikka.Core.Language.RewriteRules

Monad m => Monoid (RewriteRule m) Source # 
Instance details

Defined in Jikka.Core.Language.RewriteRules

applyRewriteRule :: MonadError Error m => RewriteRule m -> [(VarName, Type)] -> Expr -> StateT Integer m (Maybe Expr) Source #

applyRewriteRule applies a given rule to a given expr. This rewrites on all sub-exprs of the given expr, and repeats to rewrite while it is possible.

  • This function is idempotent.
  • This function doesn't terminate when a given rewrite rule doesn't terminate.