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)
)macroでrewrite rule書ける言語
macroはegg ruleに転送される
hommlをその上に実装