Go to the first, previous, next, last section, table of contents.

リストフォーム

リストを評価する場合、それは、primitive 関数コールか、関数コールか、マクロ呼 び出しであるとされます。リストの最初の要素が調べられ、それによりそれが何であ るかが判断されます。

(普通はそうなりますが) 最初の要素がシンボルである場合、そのシンボルの関数セル が調べられます。関数セルの指すオブジェクトが(また)別のシンボルである場合、(そ のシンボルの関数セルが調べられ)あたかもそれがもとのシンボルであるかのように用 いられます。シンボル indirection (訳注:間接)のレベルには限界はありません。関 数セルが void の場合 void-function エラーが出されます。

シンボルでないオブジェクトである場合、それは (primitive 関数コールで用いられる) primitive 関数か、 (関数コールで用いられる) 関数か、 (マクロ呼び出しで用いられ る) マクロでなくてはいけません。その最初の要素がシンボル autoload であるリスト の場合、オートロードが試みられ、成功した場合(新たに)ロードされた関数が (代りに) 用いられます。オートロードがどのように行なわれるかに関してはセクション13.1 [オ ートロード]、ページ 113 を参照して下さい。関数セルがこれら以外のオブジェクトの 場合、invalid-function エラーが出されます。

(訳注:このように) そのリストの最初の要素が(それ自身) primitive 関数、関数、マ クロ、もしくはオートロードオブジェクトであるという(あまり)普通にはない場合、そ のオブジェクト自身が(同じように)用いられます。

(リストが lambda や macro で始まっていることで) 関数やマクロオブジェクトである と認められた場合、それが誤まりを含む(訳注:malformed)場合、 wrong-type-argument エラーや wrong-number-of-arguments エラーが出されることが あります。

(もっと良い例が必要!!)以下の例において、シンボル car は first の関数セルに入れ られ、シンボル first は erste の関数セルに入れられます。

      (fset 'first 'car)
      => car
      (fset 'erste 'first)
      => first
      (erste '(1 2 3))
      => 1

Go to the first, previous, next, last section, table of contents.