関数、マクロ、特殊フォームの記述ににおいて、パラメタのリストに &optional と いうキーワードを示す場合、それはそのパラメタに続くアーギュメントが省略可能であ ることを示します (特に値が指定されてない場合、パラメタの値はデフォルトで nil になります)。
キーワード &rest (常にパラメタを 1つ後ろに持ちます) は、(必要なパラメタとオプ ショナルなパラメタの後に) 複数のアーギュメントを続けることができることを示しま す。 (追加された)アーギュメントはリストにされ、最後のパラメタにバインドされま す。
タイプ名を持つパラメタ(e.g., integer, integer1, buffer) は、そのタイプのもので あるとされます。その他の名前を持つパラメタ(e.g., name) に関しては、本文中に記 述します。 object という名前のパラメタは、どのタイプでもありえます。いくつかの セクションでは、個々の関数の記述の前に、そのセクションにおける関数が共通して用 いるパラメタについて説明しています。
以下の記述は、仮想的な関数 foo に関するものです。コマンド、マクロ、特殊フォー ムの記述も同じ形になりますが、ページの右端の `[Function]' はそれぞれ `[Command]', `[Macro]', `[Special Form]' で置き換えられます。また、マクロや特 殊フォームでは optional-arg がオプショナルであることを示すのに `[optional- arg]' を用い、 repeated-arg を 0 回以上繰返しうるということを示すのに `repeated-arg*' を用いることがあります。
Function: foo integer1 &optional integer2 &rest integers
関数 foo は、 integer2 から integer1 を引き、他の全てのアーギュメントをそ の結果に足し込みます。 integer2 が与えられない場合、数字 19 を用います。
(foo 1 5 3 9) => 16 (foo 5) => 14
より一般的には、
(foo w x y z) == (+ (- x w) y z)
(訳注:正しい??)