次: Autoloading, 前: Macro Forms, 上: Forms
スペシャルフォーム(special form)は、 その引数を評価しないように特別な印が付いた基本関数です。 ほとんどのスペシャルフォームは、制御構造を定義したり、 変数を束縛したりします。 これらはどれも関数ではできないことです。
各スペシャルフォームには、どの引数は評価し、 どの引数は評価せずに使うかといったそれぞれに独自の規則があります。 特定の引数を評価するかどうかは、他の引数の評価結果に依存することもあります。
以下に、Emacs Lispのすべてのスペシャルフォームをアルファベット順に、 参照箇所とともにあげておきます。
andcatchcondcondition-casedefconstdefmacrodefundefvarfunctionifinteractiveletlet*orprog1prog2prognquotesave-current-buffersave-excursionsave-restrictionsave-window-excursionsetqsetq-defaulttrack-mouseunwind-protectwhilewith-output-to-temp-bufferCommon Lispに関した注意: GNU Emacs LispとCommon Lispのスペシャルフォームを比較してみる。setq、if、および、catchは、Emacs Lispでも Common Lispでもスペシャルフォームである。defunは、Emacs Lispではスペシャルフォームであるが、 Common Lispではマクロである。save-excursionは、Emacs Lispではスペシャルフォームであるが、 Common Lispには存在しない。throwは、Common Lispでは(複数の値を返す必要があるため) スペシャルフォームであるが、 Emacs Lispでは(複数の値はないため)関数である。