We would like to have a way to create a "template" language with a "template" pass, and then extend both the language and the pass to create a concrete pass.
We would like to be able to extend both the existing transformers and the list of definitions, expressed using something like the - and + syntax that we extend passes with.
The idea is to have something like:
(define-pass foo-template : L-template (x) -> L-template ()
(definitions
(define f1 (lambda (x) ---))
(define f2 (lambda (y) ---))
---)
(A : A (x) -> A ()
[(a) `(a)]
[(b ,x ,y ,z) `(b ,x ,y ,z)]
---)
(B : B (x) -> B ()
[(qux ,x) `(qux ,x)]
---)
body)
We would like to have a way to create a "template" language with a "template" pass, and then extend both the language and the pass to create a concrete pass.
We would like to be able to extend both the existing transformers and the list of definitions, expressed using something like the
-
and+
syntax that we extend passes with.The idea is to have something like:
and modify it as (syntax subject to change):