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

2.4.4 シンボル型

GNU Emacs Lispにおけるシンボルとは、名前を持つオブジェクトのことです。シンボル名は、そのシンボルの表示形式として機能します。通常のLispの用法では、単一のobarray(シンボルの作成とインターニングを参照)において、シンボル名は一意であり、同じ名前を持つシンボルは二つと存在しません。

シンボルは、変数や関数名として、あるいはプロパティリストを保持するために利用できます。あるいは、単に他のすべてのLispオブジェクトと区別されるためだけに用いられ、データ構造内におけるその存在を確実に認識できるようにする場合もあります。特定のコンテキストでは、通常、これらの用途のうちいずれか一つのみが意図されています。ただし、一つのシンボルをこれらすべての方法で独立して使用することも可能です。

名前がコロンで始まるシンボル(‘:’)は、キーワードシンボルと呼ばれます。これらのシンボルは自動的に定数として扱われ、通常は未知のシンボルをいくつかの特定の候補と比較する場合にのみ使用されます。決して変化しない変数を参照してください。

シンボル名には、いかなる文字でも使用できます。ほとんどのシンボル名は、英字、数字、および句読点文字 ‘-+=*/’ を用いて記述されます。こうした名前に特別な句読点は不要であり、名前が数字のように見えない限り、名前に含まれる文字だけで十分です。(もし数字のように見える場合は、シンボルとして解釈されるよう、名前の先頭に ‘\’ を記述してください。)文字 ‘_~!@$%^&:<>{}?’ が使われる頻度は低いですが、こちらも特別な句読点は不要です。その他の文字は、バックスラッシュでエスケープすることで、シンボル名に含めることができます。ただし、文字列内での用法とは異なり、シンボル名におけるバックスラッシュは、単にその後に続く単一の文字をクォートします。例えば、文字列では ‘\t’ はタブ文字を表しますが、シンボル名では ‘\t’ は単に文字 ‘t’ をクォートするだけです。名前にタブ文字を含むシンボルを作成するには、実際にタブ(バックスラッシュを前置したもの)を使用する必要があります。しかし、そのような操作を行うことは稀です。

Common Lispに関する注記: Common Lispでは、明示的にエスケープしない限り、小文字は常に大文字に変換されます。Emacs Lispでは、大文字と小文字は区別されます。

以下にシンボル名の例をいくつか挙げます。なお、4番目の例にある ‘+’ は、数値として読み取られるのを防ぐためにエスケープされています。6番目の例では、名前の残りの部分によって数値として無効になるため、この処理は不要です。

foo                 ; A symbol named ‘foo’.
FOO                 ; A symbol named ‘FOO’, different from ‘foo’.
1+                  ; A symbol named ‘1+’
                    ;   (not ‘+1’, which is an integer).
\+1                 ; A symbol named ‘+1’
                    ;   (not a very readable name).
\(*\ 1\ 2\)         ; A symbol named ‘(* 1 2)’ (a worse name).
+-*/_~!@$%^&=:<>{}  ; A symbol named ‘+-*/_~!@$%^&=:<>{}’.
                    ;   These characters need not be escaped.

シンボル名がそのまま印刷表現となるという規則の例外として、「##」は、名前が空文字列であるインターニング済みシンボルの印刷表現となります。さらに、「#:foo」は、名前がfooであるインターニングされていないシンボルの印刷表現となります。(通常、Lispリーダーはすべてのシンボルをインターニングします。シンボルの作成とインターニングを参照してください。)