学习编写Clojure/Lisp宏的书籍

6

我正在阅读《编程Clojure》,并且对一本讨论如何创建尽可能广泛的宏的书籍感兴趣。

你有没有推荐这方面的书籍?

谢谢。

5个回答

8

关于Lisp宏的经典书籍可能是Paul Graham的《On Lisp》。虽然使用的是Common Lisp,但如果你真正想了解宏,这并不太重要,尽管Clojure在许多方面都不同(Clojure首先是Lisp-1)。


5
除了《On Lisp》之外,我还建议阅读关于Scheme卫生宏、Lisp-1与Lisp-2的内容,并且查看Clojure邮件列表中是如何使用命名空间限定符解决卫生问题的。 - user445161
1
+1 for On Lisp 和 Let over Lambda:On Lisp 是 Lisp 必读的书籍,而 Let over Lambda 则几乎完全专注于宏魔法,并提出了一些非常有趣的想法。我建议先阅读 On Lisp,然后再阅读 Let over Lambda。 - Iceland_jack

5
尽管两本书都是针对Common Lisp的,但对此的两本好书是Paul Graham的《On Lisp》(全书可在他的网站上免费阅读)和Doug Hoyte的《Let Over Lambda》。
两本书中,《On Lisp》更易于理解;即使Clojure宏更类似于Scheme的卫生宏,您仍然几乎肯定会从中学到一些东西。

4

《实用通用Lisp》这本书非常清晰地解释了Lisp宏。Clojure的宏与Common Lisp的宏相似,所以你学到的几乎都可以应用。《让Lambda流淌》,虽然是一部有趣、有创意的作品,但其使用Lisp宏的方式与大多数经验丰富、实用的Lisp程序员不同。我不建议使用“变形”宏(了解特定变量名称的宏)。


4
Michael Fogus即将出版的书《Clojure之乐》(The Joy of Clojure)通过Manning的早期访问计划可获得,其中有一章关于宏非常好。这是一本优秀的书籍,解释了函数式编程背后的思维方式,并且不仅说明了Clojure的特性(包括最新的1.2变化)如何实现,而且还说明了为什么要这样实现。
关于宏的章节解释了在Clojure中使用宏的以下用例,以及它们如何实现和处理:
- 定义控制结构 - 合并形式 - 更改形式 - 返回形式 - 控制符号解析时间 - 管理资源

0

这不是一本通用的宏编写书,但AMOP演示了如何将宏用作库/框架的“视图”层。

(嗯,我描述得不太好。 AMOP是一本有点难以归类的书!)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接