94fc6bf56d
This commit introduces support for AST macros and templates, enabling users to define and use custom, reusable components within the visual DSL. Key changes include: - A new `MacroRegistry` to manage macro definitions. - A `MacroExpander` to process macro calls and expand templates. - A `MacroEvaluator` trait for evaluating expressions during expansion. - The `Expansion` node in `BoundKind` to preserve the original macro call and its expanded form for debugging. - Updates to the `Binder`, `Dumper`, and `UpvalueAnalyzer` to handle the new macro constructs. - New examples demonstrating various macro functionalities like `unless`, splicing, and nested macros.
9 lines
257 B
Plaintext
9 lines
257 B
Plaintext
;; Benchmark: 400ns
|
|
;; Financial DSL Macro example
|
|
;; Demonstrates generating complex records from simple parameters.
|
|
;; Output: {:price 100, :size 2, :total 200}
|
|
|
|
(do
|
|
(macro trade [p s] `{:price ~p :size ~s :total (* ~p ~s)})
|
|
(trade 100 2))
|