Common Lisp マクロを書くときにおろそかにしてはいけないこと

他にも沢山ありそうですが、最初の方にひっかかったことを列挙。

  • シンボルが何なのか。変数名みたいなものと曖昧に思っているとつまづく。パッケージと関連していることを意識すること。
  • keyword がなぜ便利か、理解する。マクロを書いたパッケージと違うパッケージでマクロを展開してみる。
  • リスト処理をパズルと思っておろそかにしていると、よくない。プログラムを書くプログラム(つまりマクロ)は、結局リスト処理そのもの、ということを忘れない。
  • read関数とリードテーブル。
  • ラムダリスト。各種のパラメーター &key &rest を綺麗に使えば、リスト処理を簡潔にできる。
  • クォート。何が評価されて何が評価されないのか?
  • 見た目。emacs のインデントはカスタマイズできるので、自作マクロのインデントが汚くても悩まない。

以下はむしろ強調されているのであまり引っ掛からなかった。

  • 変数捕捉。ちゃんと gensym を使う。