Gauche > Archives > 2020/06/17

2020/06/17 04:07:11 UTChamayama
#
どうも、call/cc も直近の reset までみたいな考え方があるっぽい。
#
また、prompt-tag という概念があって、他とかぶらない prompt-tag を指定すれば、深い reset のネストから大域脱出してもリークしないもよう。
#
あと、関数呼び出しに似たような、末尾だから処理を省略するとか、そういうのもあるもよう。
#
Racket on Chez は、Chez の native の call/cc をベースに、racket/control ライブラリを実装しているようで、参考になるかもしれない。
#
(しかし、call/cc はプリミティブとして良くないとか言っていたと思うが、それをベースにしてよかったのだろうか?)
#
効率無視で概念を表すだけのシンプルなサンプル実装とかあるとよいのですが。。。
2020/06/17 04:14:58 UTCshiro
#
shift/resetだけならGasbichler & Sperberの論文でいいと思うんですが、動的環境の扱いがはっきりは書いてないんですよね、確か。
2020/06/17 04:57:52 UTCkaki
#
Racketの call/cc はそれですね。>直近の reset まで、prompt-tagあり
#
ということは、Gaucheの call/cc はRacketとは違う道を行くことになるんでしょうか。
2020/06/17 06:49:25 UTCshiro
#
うーむ、まだ決めてないです。Gaucheの場合、CからScm_Evalなどで呼ばれた場合、そこには1度以上戻れないので、常にプログラム開始時から全ての継続が取れるとも限らないです。直近のresetまでにしちゃうとその心配はなくなる(Scm_Evalがresetをimplyしてると考える)んですが…