Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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 を生成するために外側のラムダの実行にどのように影響するかはまだわかりません。
は、outer の戻り値として(k k1)返されます。次に、 ( の一部として)を呼び出すと、 inner の戻り値として 5 が返され、それが (今回は通常の戻り値として) outer の戻り値として返されます。k1call/cck1(... (lambda (x) 5))call/cccall/cc
(k k1)
k1
call/cc
(... (lambda (x) 5))
すみません、それはかなり一口でした。:-)