if の使い方を見ると、大抵その人が Lisp に浸っているかどうかが分かる。 手続型言語から見ると if は「制御文」であり、処理の流れを切り替えるために 使う。たとえばこんな風。
(if need-hogehoge (setq foo "hogehoge") (setq foo "fugafuga"))
ああ、もったいない。if もやっぱり関数なのだ(末尾註)。ifは第一引数の値 に応じて第二引数を返すか、第三引数以後の最後のものを返すかするという関数 である。
(setq foo (if need-hogehog "hogehoge" "fugafuga"))
これで、ifが返してくれる値を捨てることなくsetqに拾わせることができる。 とにかくLispは値が命。無駄に値を捨てない。もったいないお化けを出さない。