>>448
それ、まだ序の口。

>>447
Lispは方言の多い言語、というよりLispはある種のカテゴリでありひとつの言語では無い。
よって、以下の説明とは違う考え方を採用しているものもある。2大潮流であるSchemeと
CommonLispを念頭に置いて説明することにする。また、根本的な概念からして違うので説
明しづらい部分が多く、不正確になるのを承知で簡単のためC/C++的な用語を使う。ご承知
願いたい。

まず、マクロ展開処理を行なうのは「プログラマが書いたコード(マクロ展開子)」である
点。いうなればハンドラのようなものと考えてよいと思う。コード中にマクロ名が表れれ
ばそれ以下の式がマクロの入力となり、マクロが「処理した結果」に置き換えられる。そ
してマクロもまたLispで記述され、マクロの中では通常の関数も使える。つまり、プリプ
ロセス→コンパイルというウォーターフロー的な工程で処理されるのではない。

CommonLispでは更に字句レベルでのマクロ処理もサポートしている。リードマクロと呼ば
れている。検索すればそのキチガイ度は明白なので詳細は述べないが、C言語(のサブセッ
ト)をマクロで実装することさえ出来ると言えばその異常さがわかるだろう。C言語を入力
したらマクロ展開されてCommonLispのコードになって処理される、これがキチガイと言わ
ずして何だ。

かのエリック・レイモンドもこう述べている。「LISPは、それをモノにしたときの素晴ら
しい悟り体験のために勉強しましょう。」

konisiが挙げている例と関係なくなったが、これでLispに関心を持った方は関連スレへGo!

Lisp Scheme Part21
http://pc11.2ch.net/test/read.cgi/tech/1207300697/

【入門】Common Lisp その4【質問よろず】
http://pc11.2ch.net/test/read.cgi/tech/1201402366/