if


if の使い方を見ると、大抵その人が Lisp に浸っているかどうかが分かる。 手続型言語から見ると if は「制御文」であり、処理の流れを切り替えるために 使う。たとえばこんな風。

(if need-hogehoge
    (setq foo "hogehoge")
  (setq foo "fugafuga"))

ああ、もったいない。if もやっぱり関数なのだ(末尾註)。ifは第一引数の値 に応じて第二引数を返すか、第三引数以後の最後のものを返すかするという関数 である。

(setq foo (if need-hogehog "hogehoge" "fugafuga"))

これで、ifが返してくれる値を捨てることなくsetqに拾わせることができる。 とにかくLispは値が命。無駄に値を捨てない。もったいないお化けを出さない。


註: 厳密にいうとifはその定義の型式上純粋な関数ではなく、スペシャルフォー ムという。が、引数を評価して値を返すという働きとしては関数と同様に働くの でプログラミングを行う場合には関数だと思って使うことができる。
Generated with mkdiary.pl