Scheme 寻找人为的示例代码:continuations!
所以我相信我现在理解了延续,至少在某种程度上,多亏了和 但我希望有更多的实践——也就是说,我可以在头脑中处理更多的示例代码(最好是人为的,这样就不会有多余的东西干扰这个概念) 具体地说,我想解决更多关于继续和/或协同路由的问题,而不仅仅是使用它们来退出循环或其他什么(这相当简单)Scheme 寻找人为的示例代码:continuations!,scheme,continuations,coroutine,Scheme,Continuations,Coroutine,所以我相信我现在理解了延续,至少在某种程度上,多亏了和 但我希望有更多的实践——也就是说,我可以在头脑中处理更多的示例代码(最好是人为的,这样就不会有多余的东西干扰这个概念) 具体地说,我想解决更多关于继续和/或协同路由的问题,而不仅仅是使用它们来退出循环或其他什么(这相当简单) 无论如何,如果你知道除了我上面链接的那些教程之外,还有一些不错的教程,或者如果你想发布一些你写的东西,这将是一个很好的练习,我将非常感激 是的,连续剧可能会让人心烦意乱。这是我不久前发现的一个很好的谜题-试着找出打印的
无论如何,如果你知道除了我上面链接的那些教程之外,还有一些不错的教程,或者如果你想发布一些你写的东西,这将是一个很好的练习,我将非常感激 是的,连续剧可能会让人心烦意乱。这是我不久前发现的一个很好的谜题-试着找出打印的内容以及原因:
(define (mondo-bizarro)
(let ((k (call/cc (lambda (c) c)))) ; A
(write 1)
(call/cc (lambda (c) (k c))) ; B
(write 2)
(call/cc (lambda (c) (k c))) ; C
(write 3)))
(mondo-bizarro)
解释其工作原理(包含扰流板!):
call/cc
存储返回它自己的延续并存储在k
中1
写入屏幕1
再次写入屏幕2
写入屏幕1
再次写入屏幕3
写入屏幕因此,正确的输出是
11213
。我在粗体文本中指出的最常见的症结——需要注意的是,当使用continuations“重置”k值时,它不会影响原始continuation中k的值。一旦你知道它变得更容易理解。布朗大学的编程语言课程公开提供。嗯,是的,这正在摧毁我的大脑。csi说结果是11213,但我只能理解“112”。。。我一定错过了什么!谢谢,黑体字正是我困惑的地方。让我再试一次……:)再次感谢。这个练习很有帮助。我不是一个聪明人,所以我需要尽可能多的这个!别自责了,我也花了一段时间才明白。绊脚石甚至不是由连续体造成的,而是由Scheme中变量的绑定方式造成的。