Common LispのマクロとCのマクロの違い - lisp-cookbook-ja/common-lisp GitHub Wiki
- 実現方法の違い
:C:基本的に文字列(トークン)の置換 :Common Lisp: 構文操作(リスト操作) 。
構文の文脈(レキシカル変数等)も操作可能(&environment等を利用する)。
なお、構文操作の枠組みで文字列置換でマクロ展開することも可能(マクロ展開の仕組みの中で文字列操作すれば良い)
:C:プリプロセッサによる置換処理 :Common Lisp:基本的にコンパイル前のマクロ展開が利用されるが、eval実行時に展開することも可能
- D-Expressions: Lisp Power, Dylan Style