2

我有几个用 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 方面有多好?

4

1 回答 1

2

Clojure 可能是用于创建 DSL 的最佳 JVM 语言,因为它具有宏。一些可能会启发您的示例(取自https://stackoverflow.com/a/3968289/476116):

当然,跷跷板是摇摆 DSL 的一个例子。

于 2013-12-11T16:00:53.880 回答