継続マラソン - 継続の実装方法を考える5
「Schemeを作ろう 第3回」さんにある方法だが、自分でスタックを把握しながら図を描いたら良く分かった。
僕の理解では
- 処理系に存在する継続を順にリストに保存する
- 手続き呼出し key, 引数を value として手続きに必要なものを保持する
ことが肝要であり、この方法は今の実装と相性が良さそうに思える。
setjmp/longjmp 拡張作戦は、今までの経験から全て想像の範囲内だがこの方法は手を動かした方が身になりそう。
なので以下のように進めようと思う。
- 現在の処理系で継続を保持してみる
- 現在の処理系で手続きと引数を保持してみる
- 任意の時点での継続を再開できるか実験してみる
- この実装方法を採用するかを検討する
r3945 が分岐点。