GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/eintr/nil-explained.html ・ emacs-doc.conao3.com

nil の解説

真理性の検定を例示する前に、nilについての説明が必要である。

Emacs Lispにおいて、シンボル nil には2つの意味があります。1つ目は空リストを意味します。2つ目は false を意味し、真偽判定テストが false となった際に返される値です。nil は、空リスト、()、あるいは nil として記述できます。Lispインタプリタの観点からは、() と nil は同じものです。しかし、人間は false に nil を、空リストに () を用いる傾向があります。

Emacs Lispでは、nil(空リストではない)あらゆる値は真とみなされます。つまり、評価の結果が空リストではない値となった場合、if 式は真と判定されます。例えば、テスト用のスロットに数値が格納されている場合、その数値は評価され、数値が評価された際の挙動に従って自身を返します。この条件式において、if 式は真と判定されます。この式が偽と判定されるのは、式の評価によって空リストである nil が返された場合のみです。

次の例で2つの式を評価すれば、それが分かります。

最初の例では、if 式のテストとして数値 4 が評価され、自身を返します。その結果、式の then 部分が評価されて返され、エコー領域に ‘true’ が表示されます。2番目の例では、nil は偽を示します。その結果、式の else 部分が評価されて返され、エコー領域に ‘false’ が表示されます。

(if 4
    'true
  'false)

(if nil
    'true
  'false)

ちなみに、真を返すテストに対して他に有用な値が用意されていない場合、Lispインタプリタは真を表すシンボル t を返します。例えば、式 (> 5 4) は、通常の方法で評価すればわかるように、評価時に t を返します:

(> 5 4)

一方、この関数はテストが偽の場合に nil を返します。

(> 4 5)