次: Evaluation Notation, 前: Some Terms, 上: Conventions
nilとt
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では、nilとtは特別なシンボルであり、
評価するとそれ自身になります。
そのため、これらをプログラム内で定数として使うとき、
これらをクォートする必要はありません。
これらの値を変更しようとすると、エラーsetting-constantになります。
コロン(`:')で始まる名前のシンボルも同様です。
See Constant Variables。