次: Sequence Type, 前: Character Type, 上: Programming Types
GNU Emacs Lispにおけるシンボル(symbol)は、 名前を持ったオブジェクトです。 シンボル名は、シンボルの表示表現としての役割があります。 普通の使い方では、名前は一意です。 つまり、2つのシンボルが同じ名前を持つことはありません。
シンボルは、変数としての役割、関数名としての役割、 あるいは、属性リストを保持する役割を果たします。 また、他のすべてのLispオブジェクトと区別するためだけの役割を 果たすこともあり、データ構造の内部にそのようなシンボルが存在することを 正確に認識できます。 ある場面においては、普通、これらのうちの1つの使い方をします。 しかし、ある1つのシンボルに対してすべての使い方をしてもかまいません。
シンボル名には、どんな文字でも含められます。 ほとんどのシンボル名は、英文字、数字、`-+=*/'の句読点文字で書かれます。 そのような名前では、特別な書き方は必要ありません。 名前が数に見えなければ、名前を構成する文字はなんでもよいのです。 (名前が数に見えるときには、 名前の先頭に`\'を書いてシンボルであると強制する。) `_~!@$%^&:<>{}'の文字はあまり使われませんが、 これらにも特別な書き方は必要ありません。 これら以外の文字は、バックスラッシュでエスケープすれば、 シンボル名に含められます。 文字列におけるバックスラッシュの用法とは対照的に、 シンボル名におけるバックスラッシュは、直後の1文字をクォートするだけです。 たとえば、文字列では`\t'はタブ文字を表しますが、 シンボル名では英文字`t'をクォートするだけです。 名前にタブ文字を含むシンボルを書くには、 実際に(バックスラッシュの直後に)タブを使う必要があります。 しかし、そのようなことをするのは皆無でしょう。
Common Lispに関した注意: Common Lispでは、小文字を明示的にエスケープしない限り、 小文字をつねに大文字に『変換』する。 Emacs Lispでは、大文字と小文字を区別する。
シンボル名の例をいくつかあげましょう。 5番目の例の`+'は、数として読まれるのを防ぐために エスケープしてあることに注意してください。 6番目の例では、これは必要ありません。 なぜなら、名前の残りの部分が数としては不正だからです。
foo ; `foo'という名前のシンボル FOO ; `FOO'という名前のシンボル、`foo'とは別 char-to-string ; `char-to-string'という名前のシンボル 1+ ; `1+'という名前のシンボル ; (整数の`+1'ではない) \+1 ; `+1'という名前のシンボル ; (読みにくい名前) \(*\ 1\ 2\) ; `(* 1 2)'という名前のシンボル(悪い名前) +-*/_~!@$%^&=:<>{} ; `+-*/_~!@$%^&=:<>{}'という名前のシンボル ; これらの文字をエスケープする必要はない