我正在做一个 Clojure 项目,我经常发现自己为 DSL 编写 Clojure 宏,但我正在观看有关公司如何在实际工作中使用 Clojure 的 Clojure 视频,演讲者说在实际使用中他们不使用宏DSL,它们只使用宏来添加一点语法糖。这是否意味着我应该使用标准函数编写我的 DSL,然后在最后添加一些宏?
更新:在阅读了对这个问题的许多不同(和有趣)的回答后,我意识到答案并不像我最初想象的那样明确,原因有很多:
应用程序中有许多不同类型的 API(内部、外部)
API 有多种类型的用户(只想快速完成某事的业务用户,Clojure 专家)
那里有隐藏样板代码的宏吗?
我会离开并更深入地思考这个问题,但感谢您的回答,因为他们给了我很多思考。我还注意到 Paul Graham 的想法与 Christophe 的视频相反,他认为宏应该是代码库的很大一部分(25%):