2010-08-26 11 views

Antwort

8

Das Quintessenz Buch über Lisp Makros ist wahrscheinlich Paul Graham On Lisp. Es hat zwar Common Lisp verwendet, aber das ist nicht so wichtig, wenn man wirklich Makros betrachten möchte, obwohl Clojure's auf verschiedenen Ebenen unterschiedlich sind. (Clojure ist ein Lisp-1, um damit zu beginnen.)

+5

+1. Zusätzlich zu "On Lisp" würde ich auch empfehlen, über Schemes Hygienemakros, Lisp-1 vs Lisp-2, zu lesen und auch Clojure Mailinglisten-Posts darüber zu schlauen, wie es das Hygieneproblem auf clevere Weise mit Namespace-qualifizierten Symbolen löst. –

+1

+1 für On Lisp und Let over Lambda: On Lisp ist ein Muss für Lisp während Let over Lambda konzentriert sich fast ausschließlich auf Makro-Zauberei und bietet einige wirklich interessante Ideen. Ich würde empfehlen, On Lisp zuerst zu lesen und dann über Lambda zu lassen. –

5

Obwohl sie in Common Lisp gerichtet sind beide, zwei große Bücher dafür sind On Lisp von Paul Graham (Voll Buch kostenlos erhältlich online unter his website) und Let Over Lambda von Doug Hoyte.

Von den zwei On Lisp ist zugänglicher; Auch wenn Clojure-Makros IIRC mehr ähneln als Schema-Hygienemakros, werden Sie mit ziemlicher Sicherheit etwas daraus lernen.

0

Es ist nicht gerade ein Allzweck-Makro-Buch, aber AMOP zeigt, wie Makros als 'Ansicht' Schicht für eine Bibliothek/Framework zu verwenden.

(Hmm, ich bin dies eine sehr gute Arbeit nicht tun, zu beschreiben. AMOP ist ein Buch, das Art von Kategorisierung trotzt!)

3

Das Buch „Practical Common Lisp“ sehr deutlich Lisp-Makros erklärt. Clojures Makros sind denen von Common Lisp ähnlich, sodass praktisch alles, was Sie lernen würden, übertragen würde. "Let Over Lambda", während eine lustige, interessante und kreative Arbeit, verwendet Lisp-Makros ganz anders als sie von ernsthaften, erfahrenen, praktischen Lisp-Programmierern verwendet werden. Ich empfehle die Verwendung von "anamorphischen" Makros (die über bestimmte Variablennamen "wissen") nicht.

4

Michael Fogus 'kommendes Buch The Joy of Clojure, erhältlich durch Mannings Early Access Program, hat ein gutes Kapitel über Makros. Es ist ein exzellentes Buch, das die Denkweise hinter der funktionalen Programmierung erklärt und nicht nur wie, sondern auch warum Clojures Funktionen (einschließlich der neuesten 1.2 Änderungen) so implementiert werden, wie sie sind.

Das Kapitel über Makros erläutert die folgenden Anwendungsfälle für Makros in Clojure, wie sie umgesetzt werden können, und wie sie verarbeitet werden:

definieren Kontrollstrukturen
Kombination Formen
wechselnden Formen
Rückkehr bildet
Kontrolle symbolische Auflösung Zeit
Ressourcen verwalten