在Clojure中声明宏中的设计模式

Chi*_*ron 2 lisp jvm design-patterns metaprogramming clojure

Lisp的优点之一是Macros.我一直在读Java,你一次又一次地编写设计模式.不是在Lisp/Clojure中.
在Lisp/Clojure中,您将在宏中声明模式,并且您只需编写实际代码.

好的,好看和花花公子,但看到相信.

你能不能给我(或参考我)一个代码示例 - 最好是Clojure-关于如何在宏中声明一个设计模式?

sku*_*uro 10

大多数现有的设计模式仅在面向对象的世界中起源并且有意义.一旦你进入函数式编程,特别是像Clojure这样的Lisp方言,你对设计模式的需求就越来越小.有一个关于设计模式和FP的intresting讨论这里.

另一方面,宏并不打算封装设计模式,而是使用更方便解决手头问题的结构来扩展语言.拿with-open宏:把它称为一个设计模式来调用close资源似乎是错误的.

模式也存在于FP世界中,但由于您不再拥有对象,因此它们主要关注算法.FP语言的"模式"的好例子是monadzippers.

警告:理解这些概念可能需要时间,但绝对值得理解它们的每一点.

  • 我认为嵌入式DSL*是该语言的扩展,并将包含在skuro的含义中. (3认同)