Next: , Previous: Some Terms, Up: Conventions


1.3.2 nilt

Lispでは、シンボルnilには3つの異なる意味があります。 まず、nilという名前のシンボルです。 2つめは、真理値の(false)です。 3つめは、空リスト、つまり、要素数が0個のリストです。 変数として使った場合、nilの値はつねにnilです。

Lispリーダにとっては、‘()’と‘nil’は同一です。 どちらも、同じオブジェクト、シンボルnilを表します。 シンボルを異なった書き方にするのは、完全に人間向けです。 ‘()’や‘nil’をLispリーダが読み取ったあとでは、 プログラマが実際にどちらの表記を用いたかわかりません。

本書では、空リストを強調するときには()を使い、 真理値のを強調するときにはnilを使います。 これは、Lispプログラムでも使うとよい慣習です。

     
     
     (cons 'foo ())                ; 空リストであることを強調する
     (not nil)                     ; 真理値のであることを強調する

真理値の真を必要とする場面では、 nil以外の値は、(true)であるとみなします。 しかし、を表す望ましい書き方はtです。 を表す値が必要なとき、 適当な判断基準がない場合にはtを使います。 シンボルtの値はつねにtです。

Emacs Lispでは、niltは特別なシンボルであり、 評価するとそれ自身になります。 そのため、これらをプログラム内で定数として使うとき、 これらをクォートする必要はありません。 これらの値を変更しようとすると、エラーsetting-constantになります。 コロン(‘:’)で始まる名前のシンボルも同様です。 See Constant Variables