Next: , Previous: , Up: Variables   [Contents][Index]


12.2 変更不可な変数

Emacs Lispでは特定のシンボルは、通常は自分自身に評価されます。これらのシンボルにはnilt、同様に名前が‘:’で始まる任意のシンボル(これらはキーワードと呼ばれる)が含まれます。これらのシンボルはリバインドや、値の変更はできません。niltへのセットやリバインドは、setting-constantエラーをシグナルします。これはキーワード(名前が‘:’で始まるシンボル)についても当てはまります。ただしキーワードが標準のobarrayにinternされていれば、そのようなシンボルを自分自身にセットしてもエラーになりません。

nil ≡ 'nil
     ⇒ nil
(setq nil 500)
error→ Attempt to set constant symbol: nil
Function: keywordp object

この関数はobjectが‘:’で始まる名前のシンボルであり、標準のobarrayにinternされていればt、それ以外はnilをリターンする。

これらの定数はスペシャルフォームdefconst(Defining Variablesを参照)を使用して定義された定数(constant)とは根本的に異なります。defconstフォームは、人間の読み手に値の変更を意図しない変数であることを知らせる役目は果たしますが、実際にそれを変更してもEmacsはエラーを起こしません。

現実的な種々の理由により、追加で少数のシンボルが読み取り専用になります。これらにはenable-multibyte-charactersmost-positive-fixnummost-negative-fixnumの他にいくつかのシンボルが含まれます。これらにたいしてセットやバインドを試みると、すべてsetting-constantエラーがシグナルされます。