GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/eintr/Complications.html ・ emacs-doc.conao3.com

合併症

さて、最初の注意点です。Lispインタプリタは、リストに加えて、クォートされておらず、かつ括弧で囲まれていないシンボルも評価できます。Lispインタプリタは、そのシンボルの値を変数として判定しようとします。この状況については、変数のセクションで説明されています。(変数を参照してください。)

2つ目の複雑な点は、一部の関数が特殊であり、通常の動作をしないために生じます。そうした関数は特殊形式と呼ばれます。これらは関数の定義といった特別な用途に用いられ、その数はそれほど多くありません。続く数章では、特に重要な特殊形式をいくつか紹介します。

特殊な形式に加えて、マクロもあります。マクロとはLispで定義される構成要素であり、Lisp式を、元の式の代わりに評価される別の式に変換するという点で関数とは異なります。(Lispマクロを参照してください。)

この導入にあたっては、それが特殊形式なのか、マクロなのか、あるいは通常の関数なのかについて、あまり気にする必要はありません。例えば、if は特殊形式ですが(if 特殊形式 を参照)、when はマクロです(Lisp マクロ を参照)。以前のバージョンの Emacs では、defun は特殊形式でしたが、現在はマクロになっています(defun マクロ を参照)。動作は依然として同じです。

最後の複雑な点は次のようなものです。Lispインタプリタが参照している関数が特殊形式ではなく、かつリストの一部である場合、Lispインタプリタはそのリストの中にさらにリストが含まれているかを確認します。内部リストがある場合、Lispインタプリタはまずその内部リストをどう処理すべきかを判断し、次に外側のリストを処理します。もし内部リストの中にさらに別のリストが埋め込まれていれば、まずそちらを処理し、以下同様に続きます。常に最も内側のリストから先に処理されます。インタプリタは最も内側のリストを先に処理し、そのリストの結果を評価します。その結果は、それを囲む式で使用されることがあります。

それ以外の場合、インタプリタは左から右へ、一つの式から次の式へと処理を進めます。