nil と t ¶Emacs Lispにおいて、シンボル nil
には3つの異なる意味があります。すなわち、‘nil’
という名前のシンボルであること、論理真理値 false
であること、そして空リスト—要素数が0のリスト—であることです。変数として使用される場合、nil は常に nil という値を持ちます。
Lispリーダーにとって、‘()’と‘nil’は同一のものです。これらは同じオブジェクト、すなわちシンボルnilを表しています。このシンボルの表記方法の違いは、完全に人間の読者のためのものです。Lispリーダーが‘()’または‘nil’のいずれかを読み込んだ後、どちらの表記が実際にプログラマによって書かれたものであるかを判断する方法はありません。
本マニュアルでは、空リストを意味することを強調したい場合には () と書き、真理値 false を意味することを強調したい場合には nil
と書きます。これは Lisp プログラムにおいても有用な慣習です。
(cons 'foo ()) ; Emphasize the empty list (setq foo-flag nil) ; Emphasize the truth value false
真理値が期待される文脈では、nil 以外の値はすべて true とみなされます。ただし、真理値 true を表現するには
t が推奨されます。true
を表す値を選択する必要があるものの、他に選択の根拠がない場合は、t を使用してください。記号
t は常に値 t を持ちます。
Emacs Lispにおいて、nil と t
は常に自身と評価される特殊なシンボルです。これにより、プログラム内で定数として使用する際にクォートする必要がなくなります。これらの値を変更しようとすると、setting-constant エラーが発生します。決して変化しない変数を参照してください。
object が2つの正準ブール値 t または
nil のいずれかである場合は、nil
以外を返してください。