#勉強不足で継続のことはよくわからないのですが、限定継続を使わなければいいということでしょうか?
#多分、動的限定継続の私の使い方が違ってるんです。今復習中。
#Olegさんの論文を見ると動的限定継続で静的限定継続を表現することはできるが、そのことを知らないで無制限に動的限定継続を使ってるコードと組み合わせるとダメなような気がする。それとも動的環境をうまく管理してやれば回避できるんかいな。
#限定継続を使わないstreamで同じことをしてみました。dump-receiver — Gist
https://gist.github.com/3153651/89612bd686ffed04b5d6d21d737bc8e8bcf88d16
#エラーにはならないのですが、期待した結果も出ないです。
#streamを使ったときには、メッセージなしで強制終了してしまうようです。
#gosh> (define s (http-get-stream "www.yahoo.com" "/"))
s
gosh> (stream-first s)
#*"<!DOCTYPE html>\n<html lang=\"en-US\" class=\"y-fp-bg y-fp-pg-grad bkt701\" style=\"\">\n<!-- m2 template -->\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\n <title>Yahoo!</title>\n <meta http-equiv=\"X-UA-"
gosh> (stream-third s)
$ <-------goshが強制終了してシェルに戻る。
#私もジェネレータの方をフルの継続を使ってやってみたんですがうまくない。一度フルの継続を使ってhttp-getから抜けた段階で「http-getの中で捕まえた部分継続」を起動すると、その部分継続の終わった先が「プログラム全体を囲む暗黙のreset」につながってしまうため、プログラムが終了してるのかな。部分継続はあくまで動的に「その時点でのreset」につながるため、他の手段でスタックをいじられてると望んだresetのところに戻ってこないってことだと思います。「このresetに戻ってくるはず」と決め打ちする使い方が間違ってるっぽい。
#部分継続の中には切り取る底を明示できるものがあるので、そういうのを導入しないとならないような気がします。