and と or
Lispの条件判定では、if や cond 以外にも and と or というのがある。
- それぞれ複数の条件をとる
- 最後の式は、真判定の場合のみの動作。偽判定時の処理は書けない。
という点は共通。それぞれ、以下のような動作をする。
- and の動作
- 条件式すべてが真の場合に true を返す
- いずれかの条件式が false となった時点で、後続の条件式は評価しない
- or の動作
- 条件式いずれかが真の場合に true を返す
- いずれかの条件式が true となった時点で、後続の条件式は評価しない
実際に何例か試す。
(and t (+ 1 1)) 2 (and t nil (+ 1 1)) NIL (and t t (+ 1 1)) 2 (and t (+ 1 1) (- 1 1)) 0
偽判定の場合の動作も書けると便利だと思うのだが・・・これをやる場合は別の方法を考えろということなのか、あるいは書き方が違うのか・・・