Common Lisp マクロを書くときにおろそかにしてはいけないこと
他にも沢山ありそうですが、最初の方にひっかかったことを列挙。
- シンボルが何なのか。変数名みたいなものと曖昧に思っているとつまづく。パッケージと関連していることを意識すること。
- keyword がなぜ便利か、理解する。マクロを書いたパッケージと違うパッケージでマクロを展開してみる。
- リスト処理をパズルと思っておろそかにしていると、よくない。プログラムを書くプログラム(つまりマクロ)は、結局リスト処理そのもの、ということを忘れない。
- read関数とリードテーブル。
- ラムダリスト。各種のパラメーター &key &rest を綺麗に使えば、リスト処理を簡潔にできる。
- クォート。何が評価されて何が評価されないのか?
- 見た目。emacs のインデントはカスタマイズできるので、自作マクロのインデントが汚くても悩まない。
以下はむしろ強調されているのであまり引っ掛からなかった。
- 変数捕捉。ちゃんと gensym を使う。