Next: Variables, Previous: Evaluation, Up: Top [Contents][Index]
Lispプログラムは、一連の式(expressions)、あるいはフォーム(forms)(Formsを参照してください)により形成されます。これらのフォームの実行順は、それらを制御構造(control structures)で囲むことにより制御します。制御構造とは、その制御構造が含むフォームをいつ、どのような条件で、何回実行するかを制御する、スペシャルフォームです。
もっとも単純な実行順は、1番目はa、2番目はb、...という、シーケンシャル実行(sequential execution: 順番に実行)です。これは、関数のbody内の連続する複数のフォームや、Lispコードのファイル内のトップレベルを記述したときに発生します — つまり、フォームは記述した順に実行されます。わたしたちはこれをテキスト順(textual order)と呼びます。たとえば、関数のbodyが2つのフォームaとbから構成される場合、関数の評価は、最初にaを評価し、次にbを評価します。bを評価した結果が、その関数の値となります。
明示的に制御構造を使用することにより、シーケンシャルではない順番での実行が可能になります。
Emacs Lispは、他の様々な順序づけ、条件、繰り返し、(制御された)ジャンプを含む、複数の種類の制御構造を提供し、以下ではそれらすべてを記述します。ビルトインの制御構造は、制御構造のサブフォームが評価される必要がなかったり、順番に評価される必要がないので、スペシャルフォームです。独自の制御構造を構築するためにマクロを使用することができます(Macrosを参照してください)。
• Sequencing: | テキスト順の評価。 | |
• Conditionals: | if 、cond 、when 、unless 。
| |
• Combining Conditions: | and 、or 、not 。
| |
• Iteration: | while ループ。
| |
• Nonlocal Exits: | シーケンスの外へジャンプ。 |