javascript - 将 Groovy DSL 移植到 Clojure

标签 javascript groovy clojure dsl nashorn

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

由于 Clojure 同时具有闭包和宏,因此它是一个值得选择的候选者,但我不知道使用 Clojure 操作动态绑定(bind)的 Java 对象(如 Groovy 脚本中的对象)有多容易(顺便说一句,我熟悉 LISP 语言家族,但是不具有 Clojure 的特定功能)。

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

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

最佳答案

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

当然还有seesaw作为 swing DSL 的示例。

关于javascript - 将 Groovy DSL 移植到 Clojure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141662/

相关文章:

javascript - 将项目添加到数组后,转发器未更新

javascript - 检查 ng-repeat 在过滤器后是否产生空集

java - Groovy 或 Java 中是否有任何类型的算术安全导航运算符?

gradle - 在gradle中更新具有特定ID的xml元素

jenkins - 如何使用 Hudson 类和 groovy 从 jenkins 工作中获得最后一次成功构建

dictionary - 如何区分 java map 和 clojure map?

javascript - 如何拦截 <button> 标签上的点击并停止提交?

Javascript 过滤器包含一个或多个字段

clojure - 在 Clojure 中使用变量检查字符串长度

clojure - 将字符串中的空格替换为逗号