为什么要尽可能地丢弃宏?

时间:2010-11-02 19:49:42

标签: macros clojure

不做宏的有什么处理?或者试图避免宏的问题是什么?

我最近看到一些帖子告诉他们放慢宏的使用:DSL!=宏,用函数而不是宏重写代码,开始研究从宏切换到函数...... < / p>

但这是什么交易?你认为宏将统治世界,你不想要那个吗?

宏有什么问题?为什么降低使用率?他们不应该成为扩展语言的方法吗?

3 个答案:

答案 0 :(得分:12)

我认为更喜欢函数到宏的主要论点是它们在运行时不能作为第一类函数使用,这限制了您使用各种强大的函数编程技术的灵活性。

我个人认为宏仍然是一个非常有用的编程工具让你正确使用它们 - 即使你能够在编译时进行复杂的代码转换,否则会导致高运行时成本或需要很多不必要的样板代码。

答案 1 :(得分:4)

Christophe Grand在clojure-conj上的演讲涵盖了这一点:http://vrac.cgrand.net/DSL.pdf

希望视频很快就会播出。

答案 2 :(得分:0)

尽可能多地删除宏:

  • 无需使用重复代码
  • 重复一个模式,
  • 编写不清楚的代码,
  • 或者mikera指出,在运行时执行重要的计算,这可能是在编译时完成的。
相关问题