【问题标题】:Are there any Clojure DSLs?有 Clojure DSL 吗?
【发布时间】:2010-10-19 11:59:37
【问题描述】:

Clojure 中是否实现了任何 DSL(领域特定语言)?

【问题讨论】:

    标签: clojure dsl


    【解决方案1】:

    与任何 Lisp 方言一样,Clojure 在 API 和 DSL 之间划出了一条非常模糊的界线,因此该术语不像在其他语言中那样具有相同的神秘性。 Lisp 程序员倾向于将他们的程序编写为 DSL 层,每一层都为其上层服务。话虽如此,这里有一些你可以说显示非平凡的 DSL 级别(无特定顺序):

    【讨论】:

    • 很棒的清单!人们也可以认为 leiningen 是一种 DSL
    • 虽然它肯定不是 DSL 的“好”示例,但我的 IRC 机器人的 defplugin 宏是用于创建 sexpbot 插件的 DSL。您可以在 src/sexpbot/plugins 中找到它的使用示例,在 src/sexpbot/respond.clj 中找到实际实现。如果您愿意,可以将其添加到列表中。我宁愿不创建一个全新的答案来添加它,因为您的答案非常好。
    • 很棒的列表,但不敢相信你忘记了 Compojure!至少有人记得戒指!
    【解决方案2】:

    SQL DSL 在 Clojure 中,有点旧,但可能是一个展示柜

    【讨论】:

      【解决方案3】:

      Enlive 的创建者 Christophe Grand:http://blip.tv/clojure/christophe-grand-not-dsl-macros-4540700(幻灯片为 here)在 2010 年 clojure-conj 会议上关于思考如何使用 clojure 构建 DSL 的有用演讲。

      我还将Ring 的设计视为 DSL 设计领域。查看 Ring 的创建者 Mark McGranaghan 的演讲:http://clojure.blip.tv/clojure/mark-mcgranaghan-one-ring-to-bind-them-4724955 (slides)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 1970-01-01
        • 2023-03-17
        相关资源
        最近更新 更多