riml

  • compile optimizationとしてrewrite rule書ける言語

    • egg ruleに変換される
  • (** match-expr: Expr): Expr[]: 再帰的なmatcher

  • (=> from: Expr to: Expr): Expr: ASTの書き換え

(rule constant_folding
  (+. ?a ?b)
  (eval (+. ?a ?b))
)
(rule expand_let
  (let ?var ?val (... ?var))
  (... ?val))
)
(rule loop_unroll
  (for ?var in (.. 0 ?n) (... ?var)
  (map (@ body (.. 0 (unquote ?n)) (\ i 
(match a
       (1 => true)
       (_ => false)
)

2023-05-16

macroでrewrite rule書ける言語
macroはegg ruleに転送される

hommlをその上に実装