Lisp 的优点之一是宏。我读过很多关于在 Java 中你一次又一次地编写设计模式的文章。不在 Lisp/Clojure 中。
在 Lisp/Clojure 中,您可以在宏中声明模式,而您只需编写实际代码。
好吧,不错,花花公子,但眼见为实。
您能否向我提供(或推荐我)一个代码示例 - 最好是 Clojure - 关于如何在宏中声明设计模式?
最佳答案
大多数现有的设计模式都起源于面向对象的世界,并且只在面向对象的世界中才有意义。一旦您进入函数式编程,尤其是 Lisp 方言(例如 Clojure),您对设计模式的需求就会越来越小。有一个关于设计模式和 FP 的有趣讨论 here .
另一方面,宏并不是为了封装设计模式,而是用更方便的结构来扩展语言,以解决手头的问题。乘坐with-open
宏:将其称为对资源调用 close
的设计模式似乎完全错误。
模式也存在于 FP 世界中,但由于您不再拥有对象,因此它们的主要重点是算法。 FP 语言“模式”的好例子是 monads和 zippers .
警告:理解这些概念可能需要时间,但绝对值得理解其中的每一点。
关于design-patterns - 在 Clojure 的宏中声明设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5246677/