提问者:小点点

将GroovyDSL移植到Clojure


我有几个使用FactoryBuilderSupport(SwingBuilder是典型示例)制作的“构建器”GroovyDSL,主要是因为性能问题(也因为我担心Groovy的未来,例如Groovy 3是否会包含一个新的MOP?),我正在寻找基于JVM的内部DSL的替代框架。

由于Clojure同时具有闭包和宏,它是一个有价值的候选者,但是我不知道Clojure如何容易地操作动态绑定Java对象,就像在Groovy脚本中一样(顺便说一句,我熟悉LISP语言,但不熟悉Clojure的特定特性)。

此外,我想如果我等待足够长的时间,Java8的Nashorn会添加Javascript作为另一个可能的候选者。

那么,与Groovy相比,Clojure(甚至JavaScript)在支持这种DSL方面有多好呢?


共1个答案

匿名用户

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

  • Enlive(超文本标记语言模板)
  • LazyTest(单元测试)
  • fnparse(解析器生成器)
  • Midje(测试

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