それらの節の中で例外が起き、その例外が処理されていない場合には、例外は一時的に保存されます。節の末尾で再送出されます。節で別の例外が送出される場合は、保存されていた例外は新しい例外のコンテキストとして設定されます。節を実行している間は、プログラムからは例外情報は利用できません。文によって決まります。セクションを参照してください)。利用パターンをカプセル化して便利に再利用することができます。評価することで、コンテキストマネージャを取得します。メソッドが、後で使うためにロードされます。メソッドが、後で使うためにロードされます。メソッドが呼ばれます。戻り値が代入されます。常に呼ばれることを保証します。ターゲットリストへの代入中にエラーが発生した場合には、これはそのスイートの中で発生したエラーと同じように扱われます。スイートが実行されます。メソッドが呼ばれます。引数として渡されます。メソッドからの戻り値が偽(false)ならば、例外が再送出されます。文の次の文から続きます。戻り値は無視されて、実行は発生した終了の種類に応じた通常の位置から継続します。SUITE括弧で囲むことにより、複数のコンテキストマネージャを複数行に渡って書くことができます。複数のコンテキスト式をサポートしました。括弧で囲むことで、文を複数行に分割して書けるようになりました。文の仕様、背景、および例が記載されています。文はパターンマッチングを行う目的で使われます。後ろ)を入力とします。マッチング対象の値に対して、マッチするかどうかの判定が行われます。(パターン成功・失敗とも呼ばれます)。マッチした値の名前への束縛。必要な条件は後述します。評価され、サブジェクト値が得られます。従ってタプルが作成されます。内の各パターンに対して、サブジェクト値がマッチするかどうかをチェックします。マッチ成功・失敗の具体的なルールは後述します。マッチングのチェックにより、パターン内の名前の一部あるいはすべてに値が束縛されます。具体的な束縛ルールはパターンの種類によって異なるため、後述します。文の後でも使用することができます。注釈パターンマッチが全体として失敗しても、その中に含まれるサブパターンが成功する可能性があります。失敗したマッチで発生する名前束縛を前提としたコードを書かないように気をつけてください。逆に、マッチが失敗したあとで変数の値が変わっていないというのも前提にしないでください。実装依存であり、実装間で異なる可能性があります。色々な実装が最適化を行えるよう、意図的に実装依存としています。この場合、パターン内の名前がすべて束縛されていることが保証されています。対して再び上記の処理が実行されます。文のパターンが評価されるという前提でコードを書くべきではありません。インタープリタの実装によっては、結果をキャッシュするなどの最適化を行い、評価をスキップする可能性があります。ガードについては次のセクションを参照してください。ブロックのコードが実行されます。後に式を書く形で表記されます。ブロックのパターンが成功するかどうかをチェックする。ブロックのチェックに進む。ブロックが選択されます。ブロックは選択されません。評価中に例外が送出された場合は、その例外がそのまま送出されます。ガードは式であるため、副作用を起こすことができます。(つまり、ガードの評価は書かれている順番で実行される必要があります)。ブロックが選択された時点で、ガードの評価をそれ以上行ってはいけません。論駁不可能なケースブロックとは、何にでもマッチするケースブロックのことです。文の中で、論駁不可能なケースブロックは最大一つまで、かつ最後に位置する必要があります。ケースブロックが論駁不可能であるためには、ガードがなく、パターンが論駁不可能である必要があります。パターンが論駁不可能であるためには、その文法上の構造のみから、それが常に成功することが証明できる必要があります。注釈このセクションでは、通常のEBNFを拡張した文法記法を使用します。否定先読みの条件を表します。氏のドキュメントに影響を受けてのものです)。使用可能なすべてのパターン構造を網羅しているわけではありません。区切られた複数のパターンからなります。曖昧さ回避のため、各サブパターンが束縛する名前の組み合わせは、すべて同じである必要があります。パターンでは、サブジェクト値に対して順に各サブパターンのマッチングが行われます。パターンは成功したとみなされます。パターンは失敗したことになります。いずれかのパターンがマッチが成功すれば直ちに成功となり、それ以外の場合は失敗となります。パターンをマッチさせます。パターンは失敗となります。パターンは成功となります。指定することはできません。