- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了很多关于延续的内容,我看到的一个非常常见的定义是,它返回控制状态。
我正在学习用 SML 教授的函数式编程类(class)。
我们的教授将延续定义为:
“什么会记录我们仍然需要做的事情”
; “让我们控制调用堆栈”
他的很多例子都围绕着树木展开。在本章之前,我们做了尾递归。我知道尾递归通过使用额外的参数来“构建”答案,从而释放堆栈以保存递归调用的函数。反转列表将构建在一个新的累加器中,我们相应地附加到它。此外,他还说了一些关于函数被调用(但不被评估)的内容,除非我们到达我们向后替换的末尾。他说尾递归的改进版本将使用 CPS(Continuation Programming Style)。
有人可以简单解释一下什么是延续以及为什么它们比其他编程风格更受青睐吗?
我发现这个 stackoverflow 链接对我有帮助,但仍然没有为我澄清这个想法:
I just don't get continuations!
最佳答案
延续简单地将“接下来会发生什么”视为可以无条件使用一次、忽略其他内容或多次使用的第一类对象。
解决什么延续传球风格是,这是一些正常写的表达式:
let h x = f (g x)
g
适用于
x
和
f
应用于结果。
g
没有任何控制。无论如何,它的结果将传递给 f。
let h x next = (g x (fun result -> f result next))
g
不仅有 x 作为参数,还有一个延续,它接受 g 的输出并返回最终值。此函数调用
f
以同样的方式,并给出
next
作为延续。
f (g x)
更有用?不同的是现在
g
处于控制之中。它可以决定是否使用接下来发生的事情。这就是延续的本质。
...
while(condition1) {
statement1;
if(condition2) break;
statement2;
if(condition3) continue;
statement3;
}
return statement3;
...
关于recursion - "continuations"在函数式编程中是什么意思?(特别是 SML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956717/
我已经可以在其中输入一些附加文本了mydomain/wiki/Special:UserLogin。我添加了一句话: In order to apply for an account send an m
有人可以解释以下脚本输出背后的逻辑吗? import numpy if(numpy.dtype(numpy.float64) == None): print "Surprise!!!!" 谢谢
是我还是 gmail bulls**t?在 outlook/浏览器上,我的电子邮件是完美的,但在 gmail 上,2 个表之间有一个空间,为什么?!?图片:http://i.imgur.com/srJ
我是一名优秀的程序员,十分优秀!