srfi.190
- コルーチンジェネレータ ¶このモジュールは、ジェネレータを元にしたコルーチンの定義を簡単にするマクロ
coroutine-generator
を提供します。
[SRFI-190]{srfi.190
}
ジェネレータ手続きを返します。作られたジェネレータ手続きは、最初に呼ばれると
bodyを最初から順に実行します。
bodyの中に構文yield
が現れた場合、
それは制御を譲る手続き(yielding procedure)に評価され、
それが呼ばれるとbodyの残りの部分の継続が保存されて制御がジェネレータの
呼び出し元に戻ります。ジェネレータが再び呼ばれると、保存されていた継続が再起動されます。
bodyの最後の式の評価が終わると、
ジェネレータからEOFが返されてジェネレータの終端となります。
coroutine-generator
とほぼ同じことは、
make-coroutine-generator
を使って制御を譲る手続きを受け取る変数を明示
することでも実現できます(ジェネレータの生成参照)。
(make-coroutine-generator (lambda (yield) body ...))
違いは、このSRFIではyieldはレキシカル変数ではなく構文パラメータであることです (構文パラメータ参照)。
[SRFI-190]{srfi.190
}
coroutine-generator
の中では、制御を譲る手続きへと評価される
構文パラメータです。coroutine-generator
で使われた場合はエラーとなります。