Gauche > Archives > 2020/05/31

2020/05/31 15:01:02 UTChamayama
#
まだ、確認不足なのですが、これは仕様かも。。。
#
reset と shift の間に while が入っているため、部分継続 cont を呼び出した場合に戻ってくることがありません。
#
(無限ループなので部分継続の終端に到達しない)
#
となると、メモリを食いつぶさないためには、cont の呼び出しが末尾呼び出しである必要があると思います。
#
しかし、guard の body は末尾呼び出しにはならないので。。。
#
0.9.8 まで大丈夫だったのは、shift の実装が、ダイナミックチェーンを実際にカットするようになっていて、末尾呼び出しと同じように動いていたのかも。
https://github.com/shirok/Gauche/pull/529/files#diff-86406329889f2c13524766839f0a96b3L2503
#
ただ、これだと、部分継続の途中に call/cc で飛び込まれたときに SEGV するケースがありました。