Common LispのマクロとCのマクロの違い - lisp-cookbook-ja/common-lisp GitHub Wiki

  • 実現方法の違い

:C:基本的に文字列(トークン)の置換 :Common Lisp: 構文操作(リスト操作) 。

構文の文脈(レキシカル変数等)も操作可能(&environment等を利用する)。

なお、構文操作の枠組みで文字列置換でマクロ展開することも可能(マクロ展開の仕組みの中で文字列操作すれば良い)

処理フェイズの違い

:C:プリプロセッサによる置換処理 :Common Lisp:基本的にコンパイル前のマクロ展開が利用されるが、eval実行時に展開することも可能

参考文献

⚠️ **GitHub.com Fallback** ⚠️