- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
https://en.wikipedia.org/wiki/Continuation-passing_style说
A function written in continuation-passing style takes an extra argument: an explicit "continuation", i.e. a function of one argument. When the CPS function has computed its result value, it "returns" it by calling the continuation function with this value as the argument. That means that when invoking a CPS function, the calling function is required to supply a procedure to be invoked with the subroutine's "return" value. Expressing code in this form makes a number of things explicit which are implicit in direct style. These include: procedure returns, which become apparent as calls to a continuation; intermediate values, which are all given names; order of argument evaluation, which is made explicit; and tail calls, which simply call a procedure with the same continuation, unmodified, that was passed to the caller.
add :: Float -> Float -> Float
add a b = a + b
add' :: Float -> Float -> (Float -> a) -> a
add' a b cont = cont (a + b)
最佳答案
使用 Sylwester 的答案中的表达式,解析器将生成一个 AST,看起来像这样(节点从左到右、从上到下任意编号,括号中注明的数字供以后引用):
+
(1)
/ \
+ *
(2) (3)
/ \ / \
* * fun 5
(4) (5) (6) (7)
/ \ / \ |
3 fun 4 fun c
(8) (9) (10) (11) (12)
| |
a b
(13) (14)
+
操作符;你也可以想象右关联
+
的同样有效的树,或者甚至是一个完全关联的操作符,产生一个具有单个
+
节点和三个子节点的树。)
13
必须先到
9
;
4
和
5
必须在
2
之前进行评估等。但是,对于其他节点对,顺序无关紧要。
6
可以在
9
之前或之后评估, 例如。
关于haskell - 用 CPS 编写的函数如何使许多事情变得明确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57359295/
我在 android 代码中使用 asmack XMPP。我可以正常登录 XMPP 服务器,但是当我尝试创建新用户时出现问题。我想要实现的是: 以管理员身份登录。 创建一个新用户。 从管理员注销。 以
这是我的标记页面,其中有一个按钮可以从数据库中搜索数据并显示在网格中 这是我背后的代码 if (!IsPostBack) { LblInfo.Text = "Page Load
当我多次将相同的 float 值插入到我的集合中时,本应花费恒定时间的 x in s 检查变得非常慢。为什么? 时序x in s的输出: 0.06 microseconds 0.09 mi
我有一个小型聊天客户端,可以将所有历史记录存储在 sqlite 数据库中。当用户单击我的应用程序中的 history 选项卡时,我的应用程序会获取所有相关历史记录并将其显示在 QWebView 中。我
我是一名优秀的程序员,十分优秀!