いくつかの primitive 関数コールは、制御構造を定義したり、関数やマクロで定義す ることのできない変数バインディングを行なう特殊フォームであるとされます。 (通常 の)特殊フォームの概念との整合を取るため、("特殊フォーム" という言葉は必要とさ れる少数の特別なフォームのために取っておかれ) ほとんどの primitiveは"関数" で あると記述されます。
quote セクション 3.3 [quote]、ページ 30 参照 function セクション 10.3 [function]、ページ 89 参照 defvar セクション 9.2 [defvar]、ページ 73 参照 defconst セクション 9.2 [defconst]、ページ 75 参照 defun セクション 10.2 [defun]、ページ 87 参照 defmacro セクション 11.2 [defmacro]、ページ 87 参照 let セクション 9.3 [let]、ページ 76 参照 let* セクション 9.3 [let*]、ページ 77 参照 setq セクション 9.4 [setq]、ページ 78 参照 setq-default セクション 9.5 [setq-default]、ページ 81 参照 interactive チャプター 17 [interactive]、ページ 138 参照 progn セクション 12.3 [progn]、ページ 99 参照 prog1 セクション 12.3 [prog1]、ページ 99 参照 prog2 セクション 12.3 [prog2]、ページ 100 参照 while セクション 12.4 [while]、ページ 100 参照 if セクション 12.5 [if]、ページ 101 参照 cond セクション 12.5 [cond]、ページ 101 参照 and セクション 12.5 [and]、ページ 102 参照 or セクション 12.5 [or]、ページ 103 参照 catch セクション 12.6 [catch]、ページ 103 参照 unwind-protect セクション 12.6 [unwind-protect]、ページ 105 参照 condition-case セクション 12.7 [condition-case]、ページ 108 参照 with-output-to-temp-buffer セクション 26.7 [with-output-to-temp-buffer]、ページ 253 参照 save-excursion セクション 27.4 [save-excursion]、ページ 265 参照 save-window-excursion セクション 25.11 [save-window-excursion]、ページ 248 参照 save-restrinction セクション 24.7 [save-restriction]、ページ 233 参照
----------------
CN: setq, if, catch は、GNU Emacs Lisp と Common Lisp の両方で特殊フォームであ るとされます。 defun は、GNU Emacs Lisp では特殊フォームですが、Common Lisp で はマクロです。 save-excursion は、GNU Emacs Lisp では特殊フォームですが、 Common Lisp には存在しません。throw は、Common Lisp では (multiple value を
throw できなくてはいけないため) 特殊フォームですが、(multiple value を持たな い) GNU Emacs Lisp では関数になっています。
----------------