0

Racket でこれを試していると、答えは 5 になります。

((call/cc call/cc) (lambda (x) 5)) 

以下のように展開しました。

((call/cc (lambda (k) (call/cc (lambda (k1) (k k1))))) (lambda (x) 5))

展開が正しいと仮定すると、k 継続が k1 継続に適用されたときに何が起こるか、および 5 を生成するために外側のラムダの実行にどのように影響するかはまだわかりません。

4

1 に答える 1

1

は、outer の戻り値として(k k1)返されます。次に、 ( の一部として)を呼び出すと、 inner の戻り値として 5 が返され、それが (今回は通常の戻り値として) outer の戻り値として返されます。k1call/cck1(... (lambda (x) 5))call/cccall/cc

すみません、それはかなり一口でした。:-)

于 2014-12-12T13:34:38.273 に答える