Q
机制方案的功能的
2
A
回答
3
你刚刚偶然发现了'延续',可能是计划中最难理解的东西。
call/cc
是call-with-current-continuation
的缩写,该过程所做的是将单个参数函数作为自己的参数,并用当前的“继续”调用它。
那么什么是延续?这是非常难以解释,你应该谷歌它得到比我更好的解释。但是延续仅仅是一个论点的功能,它的主体代表了价值的某种“延续”。如果我们有(+ 2 (* 2 exp))
而exp是一个随机表达式,如果我们评估该表达式,则存在等待该结果的“延续”,评估继续进行的地方,如果它评估为3,则插入价值转化为表达式(* 2 3)
,并从那里继续下一个“继续”,或继续进行评估的地方,即(+ 2 ...)
。
在几乎所有的编程语言环境中,计算值与其开始位置相同的地方是相同的,但许多语言中的return
语句是一个关键的反例,其延续与完全不同返回语句本身。
在Scheme中,你可以直接控制你的延续,你可以像在那里一样捕获它们。 f
所做的只不过是对当前的延续进行评估,毕竟当(lambda (x) x)
被当前延续调用时,它只是对它进行评估,因此整个函数体都会这样做。正如我所说的,延续是功能本身,它们的身体可以被看作是它们将要捕获的延续,这被设计师着名地表明,延续只是简单的lambda抽象。
所以在代码f中首先评估它被称为的延续。然后,作为函数的这个延续应用于'f
(符号)。这意味着那个符号被带回到那个继续,在那里它被再次评估为一个符号,以揭示它所绑定的函数,它又被一个符号作为它的参数调用,最后被显示。
一种令人震惊的,如果你看过电影“底”,这也许解释了它:
相关问题
- 1. 方案功能
- 2. PLT方案排序功能
- 3. 方案:功能援助
- 4. 方案定义功能
- 5. 方案标准功能?
- 6. 方案 - 功能 “如果”
- 7. 方案:球拍中的循环功能
- 8. 拨号方案中的书签功能
- 9. 方案中的身份识别功能
- 10. 方案的功课
- 11. 是否可以在方案中制作切换功能?
- 12. 方案/球拍:可扩展功能
- 13. 方案最大功能(递归)
- 14. 如何抽象功能在方案
- 15. 定义一个方案功能检查
- 16. 方案功能去除原子?
- 17. 无法编译方案功能
- 18. 方案:该功能评估什么?
- 19. 什么是功能组合操作的“功能”包的替代方案?
- 20. 实用问题的强制性与功能性解决方案的好例子
- 21. 检测方案或球拍中功能的主叫方
- 22. Haskell的图案上的功能结果
- 23. 限制功能上的功能相等
- 24. 性能的解决方案
- 25. 方案限制
- 26. 没有功能的相机
- 27. 本机Trigger.io功能的Screencast?
- 28. 效率最高:不同的功能/一个功能与案例
- 29. 从x中写入数字的方案功能
- 30. 恢复方案或处理大部分的功能本身
非常感谢你的解释和链接! – shaku 2010-06-27 18:50:48