tagbody
(tagbody {tag | form}...)
本体のフォームを順に評価します (値は捨てられます)。本体中の裸のシンボル (または整数) は go タグ で、go がそのタグの直後のフォームへ前方・後方を問わず制御を移すため、明示的なジャンプでループや状態機械を書けます。末尾に到達すると nil を返します。
JVM / WASM コンパイラでの go は字句的です: 字句的に囲む tagbody のタグのみジャンプできます(インタープリタは関数呼び出しの境界を越える動的な go、つまり呼び出し元が確立したタグへのジャンプも追加でサポートします)。ネストした lambda の内側から囲む関数のタグへジャンプする形 — ループを go で再開する handler-bind ハンドラがまさにこれです — は、そのタグで tagbody に再入する非局所脱出へ低位化されるため、すべてのバックエンドで動作します。このプログラムは例外処理モードでコンパイルされるので、wasm の実行には wasmtime -W exceptions=y が必要です。