IRIYA, Kazunori
iriya****@mcn*****
2004年 5月 16日 (日) 15:44:19 JST
Shiro さん、 | ご指摘の通り、「呼び出して戻って来ない」というモデルは、計算過程の | 説明にはなりますが、その計算を利用するためには、どうにかして計算の | 結果を得る必要があります。そして、(lambda (x) x) が実際に計算の | 結果を得るための終端点になります。 [中略] | 従って、「最後に何が起こるか」という話の具体的な答えは、どのような | 計算機モデルを想定しているのかによって違って来ます。が、どのモデルを | 採るにせよ、「『CPSなプログラムの値を得る』ということは、ある特別な | 終端点を継続として渡してプログラムを評価することである」と抽象化 | できるということです。 [中略] | 「値を得るとはどういうことか」という具体的な動作は実装者次第、というわけです。 CPS 計算の解釈という名のパズルに、CPS なプログラムの計算の結果 (値) を得 るというピースが抜けていたのですね。そのことに気づきました。 また「戻る」という解釈も計算モデルにひもつく話として読めば、「戻らないけ ど戻る」と思っていたこともすっきりしたように思います。 プログラムの締めくくり方がわかったので、さっそく CPS でないプログラムと CPS なプログラムを結合させる所に取り組んでみます。 解説ありがとうございました。 また、 | プログラムとしてrepl自体を含むようなモデルは、 | Mattias Felleisen, The theory and practice of first-class prompts, POPL 1988 | でフォーマルに議論されています。上の(*)で示したモデルの話も説明されています。 こちらについては、ちょっとさがしてみます。( http://library.readscheme.org/page6.html ) には見当たらなかった... (^^; 入谷