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.
我在球拍上尝试这个,它给出的答案是 5。但我似乎无法弄清楚它是如何得到答案的。
((call/cc call/cc) (lambda (x) 5))
我将其扩展如下。
((call/cc (lambda (k) (call/cc (lambda (k1) (k k1))))) (lambda (x) 5))
假设扩展是正确的,我仍然不明白当 k 延续应用于 k1 延续时会发生什么,以及它如何执行外部 lambda 以产生 5。
将作为外部的返回值(k k1)返回。然后,当您调用(作为 的一部分)时,它返回 5 作为 inner 的返回值,然后返回(这次作为正常返回)作为 outer 的返回值。k1call/cck1(... (lambda (x) 5))call/cccall/cc
(k k1)
k1
call/cc
(... (lambda (x) 5))
对不起,那是一口。:-)