Next: Variables, Previous: Evaluation, Up: Top [Contents][Index]
Lispプログラムは一連の式、あるいはフォーム (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 ループ。
| |
• Generators: | 汎用のシーケンスとコルーチン。 | |
• Nonlocal Exits: | シーケンスの外へのジャンプ。 |