【发布时间】:2014-12-12 23:17:42
【问题描述】:
考虑以下定义。我正在使用球拍。
(define fact/k
(lambda (n k)
(cond
((zero? n) (call/cc (lambda (f) (k f))))
(else (* n (fact/k (sub1 n) k))))))
(define five (call/cc (lambda (k) (fact/k 5 k))))
现在如果它调用如下
(五一)
它什么也没有。这样做后,如果直接调用 5,它会得到 120。
$5
120
但是如果我重试(5 1)它会失败,说 120 不是一个过程。
我知道最初有五个点指向在(零?n)基本情况下捕获的延续。但我不确定如何解释上述行为。
另一个参数不同的运行
$(5 4)
五美元
480
【问题讨论】:
标签: lambda scheme racket callcc