0

我在球拍上尝试这个,它给出的答案是 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。

4

1 回答 1

1

将作为外部的返回值(k k1)返回。然后,当您调用(作为 的一部分)时,它返回 5 作为 inner 的返回值,然后返回(这次作为正常返回)作为 outer 的返回值。k1call/cck1(... (lambda (x) 5))call/cccall/cc

对不起,那是一口。:-)

于 2014-12-12T13:34:38.273 回答