作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(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
之前的 yield 在倒数第二次重新进入时,它将重新进入点设置为只返回纯值
'()
的位置。即而不是产生
'()
,实际值
waddle
是
'()
,就好像它一直是一个纯函数。
get-first
设置...当
waddle
返回“真实”,它将在
call/cc
内在
get-first
然后
(leave (quote ()))
是
get-first
的值(反过来,此
leave
旨在在最后一次迭代中返回
get-next
,因此
get-next
执行
'()
的“实际”返回)。
waddle
'()
的值将是
leave
的参数?
最佳答案
混淆是因为“leave
”不是我想要的函数,而是它在计算时计算的函数,它似乎是从左到右的,因此在“waddle
”之前。这意味着它评估为它刚刚设置的值,在前面的语句中。
道德:当使用在函数调用中需要重新定义的函数时要小心!如果这是在从右到左的解释器上,waddle
将在符号 leave
之前计算被查找为“离开”到任何地方的函数,在此期间它将被设置为不同的函数。
关于scheme - 经验丰富的 Schemer 的 get-first、get-next 和 waddle 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043704/
(define get-first (lambda (l) (call-with-current-continuation (lambda (here) (se
我是一名优秀的程序员,十分优秀!