#キーワードにするシンボル特有の問題ですが、標準のLOOPのキーワード(forなど)はどこのパッケージで使っても大丈夫なような工夫があります。具体的には名前の文字列で比較するようにしています。
#他には、
・read時に確定するようにする
・キーワードはkeywordシンボルを使う
・(共有場所として)cl-userのシンボルを使う
・専用のパッケージを使う
別のアプローチとしては、
・アナフォリックマクロは使わない(when-letあたりにする)
あたりかと思います。
#;; read時にinternする
(defmacro aif (pred con &optional alt)
(let ((it (intern "IT" *package*)))
`(let ((,it ,pred))
(if ,it ,con ,alt))))
#個人的にはアナフォリックマクロは実際のコードでは使われていないので(話題になる程には)、when-letあたりを使うようにしています。
#ありがとうございます。確かに、LOOPマクロにも特殊用途のシンボルがありますね。
*package*というものを使うとリード時にシンボルを構成することもできるのですね。入門中の身なので生兵法で使うのがちょっと怖いですが、分かって使う分にはかなり便利そうです。
アナフォリックマクロを使わないというアプローチはとても明快ですね。こちらを採用してみます。