Scheme:部分継続:動的束縛との組み合わせ

Scheme:部分継続:動的束縛との組み合わせ


GaucheFest:shelarcy

GaucheFest第12回

継続がらみの論文読み

http://page.freett.com/shelarcy/log/2006/diary_05.html#satuki312006
Delimited Dynamic Binding

部分継続?や合成可能継続?というのは、限定継続? (Delimeted Continuation) の別名 shift/pushPropt を shift/reset のかわりに使っているが、prompt を取る以外は同じ Scheme:処理系依存構文 にあるような動的束縛? (Dynamic Binding) と限定継続の組み合わせは、動的束縛と一般の継続 (Undelimited Continuation) の組み合わせと違って未定義の動作を引き起こす

たとえば

dlet p = 1 in reset in dlet p = 2 in shift as f in p

の結果は期待する1ではなく2になったり、スタックが積まれたり。そういう例は添付するソースコードに色々と載せてある
解決策
DB (動的束縛)から DC (限定継続)への変換と DB + DC から DC への変換を理論的に定義してやり、 「DC を使って DB を実装したもの」を使うようにすれば良い

星の贈り物

「機能と構成」研究領域 領域活動・評価報告書 - 平成 16 年度終了研究課題 -

Oleg Kiselyov,Chung-chieh Shan,Amr Sabry : Delimited Dynamic Binding


Tags: 動的束縛, 部分継続, 継続


Last modified : 2013/05/07 21:57:13 UTC