我有几个用 FactoryBuilderSupport 制作的“builder”Groovy DSL(SwingBuilder是典型的例子),主要是因为性能问题(也因为我担心 Groovy 的未来,例如 Groovy 3 会包含一个新的 MOP 吗?),我寻找基于 JVM 的内部 DSL 的替代框架。
由于 Clojure 有闭包和宏,它是一个值得的候选者,但我不知道使用 Clojure 操作动态绑定的 Java 对象有多么容易,比如在 Groovy 脚本中(顺便说一句,我熟悉 LISP 语言家族,但不熟悉 Clojure 的具体功能)。
另外,我猜如果我等待的时间足够长,Java 8 的 Nashorn 会添加 Javascript 作为另一个可能的候选者。
那么,与 Groovy 相比,Clojure(甚至可能是 JavaScript)在支持这种 DSL 方面有多好?