Lisp本積読解消: プログラミング言語Lisp 入門からマルチメディアまで | 9章 マクロ — #:g1

Posted 2017-02-05 15:55:58 GMT

Lisp本積読解消は、今回もプログラミング言語Lisp 入門からマルチメディアまで
9章 マクロ を読むことにする

9章 マクロ

マクロも特殊形式スペシャルフォームと言うこともある等々、なんとなく言葉の定義がふわふわした印象が多い章。
Lisp族一般の用語として、引数の評価が通常の関数とは異なるという意味での特殊形式スペシャルフォームということでは、そうなのかもしれないが、Common Lispでは、Special Form/Operatorはマクロとは一応分離されているのできっちり分けておいても良いような。

ちなみにCommon Lispでは、特殊形式スペシャルフォームはマクロで実装されていても良いし、マクロは特殊形式スペシャルフォームであっても良い(この場合、内部的に利用していなくてもマクロ展開すれば展開形が出てくる必要がある)

マクロの次にリーダーマクロの説明がある。割合に丁寧な説明で、先のマクロと同じ位の分量がある。

次に、局所ローカルマクロの解説。何故かmacroletでは再帰的な定義ができない、という説明がある。
MCLではそうだったのかなと思い古めのMCL 3.0で再帰的なマクロを定義して実際の動作を確認してみたが、問題なく定義できる。筆者の勘違いだろうか……。

その次に、defsetfの説明がある。所謂、短形式の方のみの説明。

結び

用語の定義がふわふわしていたり、局所ローカルマクロの説明が間違っていたりするので、この章に関しては、あまりお勧めできないかも。
Common Lispマクロ解説の本は充実しているので、マクロに関しては他の本を参考にするのが良さそう。


HTML generated by 3bmd in LispWorks 7.0.0

comments powered by Disqus