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

12.2 決して変わらない変数

Emacs Lispでは、特定のシンボルは通常、それ自体を評価します。これには nil や t のほか、名前が ‘:’ で始まるあらゆるシンボルが含まれます(これらは キーワード と呼ばれます)。これらのシンボルは再バインドできず、その値を変更することもできません。nil や t を設定またはバインドしようとすると、setting-constant エラーが発生します。キーワード(名前が ‘:’ で始まるシンボル)についても標準の obarray にインターニングされていれば同様ですが、そのようなシンボルをそれ自体に設定してもエラーにはなりません。

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

object が名前の先頭に ‘:’ を持つシンボルであり、標準 obarray にインターニングされている場合は t を、それ以外の場合は nil を返します。

これらの定数は、defconst 特殊形式を用いて定義される定数とは根本的に異なります(グローバル変数の定義を参照)。defconst 形式は、変数の値を変更する意図がないことを人間の読者に知らせるためのものですが、実際に値を変更しても Emacs はエラーを発生させません。

さまざまな実用上の理由から、少数の追加シンボルが読み取り専用となっています。これには enable-multibyte-characters、most-positive-fixnum、most-negative-fixnum などが含まれます。これらを設定またはバインドしようとする試みも、setting-constant エラーとなります。