>>881
コメントさせてもらうと、else を省略可能にしないほうがいいね。
(setf (if nil x) 10) とかのケースを考慮しないと。

>>882
そう、if に関してはアプローチが間違っている。Dan Kogai の出してる例だと
substr 等に関しては setf が一般解を出している。setf を拡張可能にする事により、
ユーザーが定義したデータ構造にも setf できるようになってるわけ。

でも、あまり黒魔術的な技で勝ち負けを考えないほうがいいと思うよ。C や Perl がチャンピオンだからね。