(define get-first
(lambda (l)
(call-with-current-continuation
(lambda (here)
(set! leave here)
(waddle l)
(leave (quote ()))))))
(define get-first
(lambda (l)
(call-with-current-continuation
(lambda (here)
(set! leave here)
(leave (waddle l))))))
对于任何不熟悉的书“经验丰富的策士”, get-first
, get-next
,和waddle
(过去两年在这里没有定义)的程序,显然是模拟协同程序通过传递给树遍历waddle
国债收益率只有离开。 只是之前waddle
的在其第二个到最后再入屈服,它集再入点的地方将只返回纯值'()
即代替屈服'()
实际值 waddle
是 '()
就好像它一直是一个纯函数。
考虑到这一点,我们可以看到什么get-first
组起来......当waddle
返回“真正的”,这将是内部的call/cc
在get-first
,然后(leave (quote ()))
是值中get-first
(,反过来,这个leave
打算返回get-next
的最后一次迭代,因此它get-next
该做的“实际”收益'()
那么,为什么是第二个版本不等同,其中waddle
“的价值'()
将是参数leave
?