Up: Truth & Falsehood [Contents][Index]
nil真偽に関するテストを説明するには、その前にnilについて説明する必要があります。
Emacs
Lispにおいてシンボルnilには2つの意味があります。1つ目は空のリスト、2つ目はfalse(偽)の意味であり、これはtrue-or-false-testのテストがfalseの際にリターンされる値です。nilのことをnil、あるいは空リスト()として記述できます。Lispに関するかぎり、()とnilは等価です。ただし人間に関してはfalseにはnil、空リストには()を使う傾向があります。
Emacs Lispではnil
(空のリスト)ではないすべての値はtrue(真)とみなされます。これはもしある評価において空リスト以外の何かがリターンされると、if式のテストがtrueになることを意味します。たとえばある数値をテスト用のスロットに置くとその数値が評価されて、数値を評価した際にはその数値自身がリターンされることから、その数値がリターンされることになります。そしてこの条件ではif式のテストがtrueになるのです。式を評価してリターンされたのがnilではなく空リストでないときだけ、式のテストはfalse(偽)となります。
以下の2つの式を評価してこれを確認できます。
1つ目の例ではif内のテストによって数値の4が評価されて、その数値自身がリターンされます。必然的に式のthen-partが評価されてリターンされた‘true’がエコーエリアに表示されます。2つ目の例において、nilはfalse(偽)を表すのでその結果、式else-partが評価されてリターンされた‘false’がエコーエリアに表示されます。
(if 4
'true
'false)
(if nil
'true
'false)
ちなみにtrueをリターンするような何らかの有用な値をテスト用に利用できない場合には、Lispインタープリターはtrueを表すシンボルであるtをリターンします。たとえば式(>
5 4)を評価するとtがリターンされます。これは通常の方法で評価すれば確認できます:
(> 5 4)
その反対にテストがfalseならこの関数はnilをリターンします。
(> 4 5)