2010-08-26 78 views

回答

8

關於Lisp宏的典型書可能是Paul Graham的On Lisp。不過,它使用了Common Lisp,但如果你真的想看看它的宏,這並不重要,儘管Clojure在多個層次上是不同的。 (Clojure是一個Lisp-1,開頭。)

+5

+1。除了「On Lisp」之外,我還會推薦閱讀關於Scheme的衛生宏,Lisp-1和Lisp-2,以及如何使用命名空間限定符號以聰明的方式解決衛生問題的Clojure郵件列表帖子。 – 2010-08-26 11:24:43

+1

+1對於On Lisp和Let Lambda:On Lisp是Lisp必讀的內容,而讓Lambda幾乎完全專注於宏觀嚮導,並且提供了一些非常有趣的想法。我建議先閱讀On Lisp,然後再閱讀Lambda。 – 2011-11-04 10:48:16

5

雖然他們倆都旨在Common Lisp的,因爲這兩個偉大的書Lisp上由保羅·格雷厄姆(全書可以免費在網上his website)和Let Over Lambda由Doug霍伊特。

這兩個On Lisp更方便;即使Clojure宏IIRC更類似於Scheme的衛生宏,但您幾乎肯定會從中學到一些東西。

0

這不完全是一個通用的宏寫作書,但AMOP演示瞭如何使用宏作爲庫/框架的'視圖'層。

(嗯,我不這樣做了很好的工作說明這一點。AMOP是一本書,一種蔑視的分類!)

3

書「實用的Common Lisp」解釋Lisp的宏很清楚。 Clojure的宏與Common Lisp的宏相似,幾乎所有你會學到的東西都會繼續。 「Let Over Lambda」是一個有趣,有趣和創造性的工作,它使用Lisp宏和他們被大多數認真,經驗豐富,實用的Lisp編程人員使用的方式截然不同。我不建議使用「變形」宏(即「知道」特定變量名稱)。

4

邁克爾福格斯的即將出版的書The Joy of Clojure,可通過曼寧的早期使用計劃獲得,在宏觀方面有着不錯的篇章。這是一本很好的書,解釋功能性編程背後的思想,不僅如何,還有Clojure的功能(包括最新的1.2版本變更)如何按照它們的方式實現。

上宏的這一章解釋了Clojure中,如何才能實現宏的以下案例,以及如何處理它們:

定義控制結構
相結合的形式
改變形式
返回形成
控制象徵性的解決問題的時間
管理資源