我正在开发一个Clojure项目,经常编写用于 DSL 的 Clojure 宏。但我看了一段公司如何在实际工作中使用Clojure的视频,演讲者说他们不会在实际应用中使用宏来编写DSL,只使用宏添加少量的语法糖。这是否意味着我应该先使用标准函数编写我的DSL,然后再在最后添加一些宏呢?
更新: 阅读了许多不同(也很有趣)的答案后,我意识到答案不像我最初想的那么简单,原因如下:
1. 应用程序中有许多不同类型的 API(内部、外部)。 2. API 有许多不同类型的用户(希望快速完成任务的业务用户,Clojure 专家)。 3. 宏是否隐藏了样板代码?
我将去深入思考这个问题,但感谢您的回答,它们给了我很多思考的方向。另外,我注意到Paul Graham认为与Christophe视频相反,宏应该是代码库的重要组成部分(25%): http://www.paulgraham.com/avg.html
更新: 阅读了许多不同(也很有趣)的答案后,我意识到答案不像我最初想的那么简单,原因如下:
1. 应用程序中有许多不同类型的 API(内部、外部)。 2. API 有许多不同类型的用户(希望快速完成任务的业务用户,Clojure 专家)。 3. 宏是否隐藏了样板代码?
我将去深入思考这个问题,但感谢您的回答,它们给了我很多思考的方向。另外,我注意到Paul Graham认为与Christophe视频相反,宏应该是代码库的重要组成部分(25%): http://www.paulgraham.com/avg.html