制御構造
goto 文は最も典型的な無条件のジャンプである。キーワードとしては大文字だったり小文字だったり空白が入ってgo toだったり、単にgoだったりするが、その構文はだいたいのものが以下のようになっている。
goto 文の実行により、その次に実行する文は、ラベルが示す箇所の直後の文となる。
これは 1974年、Zahn が提案した。ここではそれを若干修正したものを示す。
exitwhen は xxx 内で発生しうるイベントを指定するのに使い、イベントはイベント名を文として使用すると発生する。イベントが発生すると対応するアクションが実行され、その後 endexit 後の処理に移る。この制御構造はある状況を識別する部分と、その状況でとるべきアクションを明確に区別することができる。
exitwhen は C++ 言語の try/catch 構造と概念的によく似ているが、サブルーチン呼び出しを超えたり任意の値を渡したりしないので、より効率的と思われる。また、コンパイラは指定されたイベントが全て発生する可能性があり、それらにアクションが対応しているかどうかをチェックできる。
以下の単純な例は2次元配列から特定の要素を取り出すものである。
Ruby では、retry 文でループ全体を最初から再実行することができる。
ここではOCamlの例を挙げる。