【发布时间】:2012-05-26 02:46:37
【问题描述】:
我正在 Clojure 中设计一个 DSL,它用于驱动代码生成器(在本例中用于程序图像合成 - clisk),但我无法确定中间值的最佳表示。
最初,DSL 由返回一种或多种形式的函数组成,例如(说明)
(v+ 1.0 [1.0 'y])
=> ['(+ 1.0 1.0) '(+ 1.0 y)]
然后可以组合这些函数来构建更大的代码块。
这很简单,生成的表单可以直接输入代码生成器。但是,我现在已经确定了这种方法的一些弱点,例如,如果需要传递一些辅助数据(例如,无法以 BufferedImages 等形式编码的对象、对优化有用的元数据等)。
我确信这是 Lisp 世界中一个已解决的问题 - 这种 DSL 的最佳中间表示通常是什么?
【问题讨论】:
标签: clojure functional-programming lisp code-generation dsl