シンボルは、4 つの構成要素 (もしくは属性、もしくはセル) を持ち、それぞれ他のオ ブジェクトを指します。
print 名セルに関しては、Lisp オブジェクトのタイプに関するチャプター (セクショ ン 2.7 [シンボルタイプ]、ページ 15 参照)で述べました。
シンボルに関する(1つ)本質的な点は、ある print 名を持つシンボルは一意である(別 のシンボルが同じ print 名を持つことはない) という点です。 Lisp reader は、ある 名前を読み込む際(常に)、新しいシンボルを作る前に "その名前を持つシンボルが存在 していないか否か" を調べ、存在してないことを保証します。 (GNU Emacs Lisp で は、obarray を用いるハッシングのアルゴリズムでこれを行ないます。セクション 8.4 [obarray]、ページ 68 参照)
シンボルの(他の)3つのセルはどんな Lisp オブジェクトを指すのに用いてもかまいま せん。シンボルが関数名として用いられる場合、 (通常)関数セルは (Lisp Evaluator がそこにそれがあることを期待する) 関数への参照を持ちます。しかし、この他の方法 に関してはセクション 3.2.3.1 [関数コール]、ページ 27 を参照して下さい。キー ボードマクロ(セクション 17.7 [キーボードマクロ]、ページ 153) やキーマップ(チャ プター 18 [キーマップ] ページ155) もシンボルの関数セルにストアされることがあり ます。
同様に、プロパティーリストは (いくつかの関数はそこにプロパティーリストがあるこ とを期待するため) 通常正しくフォーマットされたプロパティリストを指します (セク ション 8.5 [プロパティーリスト]、ページ 69 参照)。値セルはそれが存在する場合、
シンボルのグローバル値を持ちます。これはどんな Lisp オブジェクトであってもかま いません (セクション 9.2 [グローバル変数]、ページ 73参照)。
(しばしば)シンボル foo の関数セルから参照されている関数のことを関数 foo と呼び ます。同じことが値セルやプロパティーリストに対しても行なわれます。必要な場合に のみ区別が行なわれます。
以下に、シンボルの構成要素のサマリと、その各々に関しさらに情報を得るためにはど こを見ればよいかを示します。
名前
読み込みや表示の際、そのシンボルを示すのに用いられる文字ストリング。
値
シンボルのグローバル値。セクション 9.4 [symbol-value]、ページ 77 参照。
関数
このシンボルが、(評価される)フォームの関数の位置や、 funcall, apply 等 に対する最初のアーギュメントの位置に現われる場合、適用される関数。
プロパティーリスト
このシンボルに関する(いくつかの)値を調べる (いくつかの)関数で用いられ るリスト。セクション 8.5 [symbol-plist]、ページ 69 参照。