面白かった。
途中から「ポール・グレアム頭いいなあ!」と思うだけの本と化している気配はあるが、とにかく流れを追っていくと、ポール・グレアムが頭がいいことがわかる本だ。
Lispのマクロをガンガン書いてくれる本というのがそもそも貴重である。そして、ポール・グレアムがマクロを駆使して、分配束縛、パターンマッチ、非決定計算、擬似prologによる簡易論理プログラミング、ATNによるパーサ、簡易オブジェクト指向、などを短いコードでどんどん実現していく。
これはめくるめく体験と言って良い。
これを読んでLispのマクロが書けるかと言われると微妙である。実際に書こうとするとまた苦労しなくてはいけないだろう。
実際この本はマクロを教えてるというより、ポール・グレアムのマクロカタログ、と言った方がいい感じになっている。あんまり教えてはくれてない。
でも、Lispを問題領域にぴったり寄り添った言語(DSL)に育てていく。そのためのLispの上にLispを置いて、抽象化の層をどんどん追加していく。というLisp独特の考え方は学ぶことができる。
そして何より一番はマクロの力を知ることができる。
自分で素早くマクロを書くことはできなくても、この本を読んでおけば、「これってポール・グレアムが賢く解決してたタイプの問題だよなあ」と気づくことができる。
そうするとマクロを試してみようとするし、そうすればマクロを書く苦労もできるし、マクロを書く能力も上がっていくという寸法だ。
マクロの書き方を教える正しい方法って、もしかしたらまだ開発されてないんじゃないか、って気もする。
ここから、Lisp本をとにかく読んでいって、どこかに書評をまとめよう。
そして、いつか自分でLispの本でも書こう。