Next: Autoloading, Previous: Macro Forms, Up: Forms
スペシャルフォーム(special form)は、 その引数を評価しないように特別な印が付いた基本関数です。 ほとんどのスペシャルフォームは、制御構造を定義したり、 変数を束縛したりします。 これらはどれも関数ではできないことです。
各スペシャルフォームには、どの引数は評価し、 どの引数は評価せずに使うかといったそれぞれに独自の規則があります。 特定の引数を評価するかどうかは、他の引数の評価結果に依存することもあります。
以下に、Emacs Lispのすべてのスペシャルフォームをアルファベット順に、 参照箇所とともにあげておきます。
and
catch
cond
condition-case
defconst
defmacro
defun
defvar
function
if
interactive
let
let*
or
prog1
prog2
progn
quote
save-current-buffer
save-excursion
save-restriction
save-window-excursion
setq
setq-default
track-mouse
unwind-protect
while
with-output-to-temp-buffer
Common 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では(複数の値はないため)関数である。