コンテンツにスキップ

制御フローと Section トポロジー

このページは Ktory の設計原則 に従い、現在の契約と長期目標を区別します。

ルートはソース順に進み、名前付きセクションの本文を読み飛ばします。規範の書式では、本文を === Label === より深くインデントし、宣言と同じ深さに戻るとルートの内容に戻ります。

: 物語が始まる。
=> Greeting
: 本筋を続ける。
-> end
=== Greeting ===
アリス: ようこそ。
-> return

=> Greeting は戻り先を記録し、-> return で「本筋を続ける」に戻ります。-> Greeting に置き換えると呼び出しスタックが空になるため、戻り先があるとは仮定できません。

指令 意味
-> Label 呼び出しスタックを消去して対象セクションへ移る
=> Label 戻り先を記録して対象セクションを呼ぶ
-> return 呼び出しフレームを取り出して戻る。空スタックは制御エラー
-> break 最も近い活動中のループを抜け、その後へ進む
-> end ルートではファイル終了。名前付きセクションではスタックを消去し、ソース上で後続する最初のルートへ進む

名前付きセクションの自然終了も、その中の -> end と同じです。呼び出し元へ自動では戻りません。 戻る場合は -> return を記述します。ホストは Start(entryLabel: "Greeting") で入口を指定できますが、戻り先は作られないため、上の例の末尾の return はルートから呼び出した場合にだけ有効です。

Forward-only は前の記述へのジャンプやループを禁止しません。以前の外部副作用を自動で取り消さないという意味です。演出や状態変更を持つ拍へ入り直すと、修飾子も再度通知されます。