- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正试图在 Scheme 中找出整个 call/cc
的东西。下面是我正在使用的代码:
(+ 1 (call/cc
(lambda (k)
(if (number? k)
(call/cc (lambda (k) (k (- 1 k))))
(k 4)))))
所以这里我们开始在第一个括号中添加两个参数。 1
以及我们必须评估的其余部分,因为急切的评估。所以我们有一个 call/cc
接受一个参数,一个函数,call/cc
通过调用来求值。 (我说得对吗?)同时它在我们的第一个括号中保留了到目前为止发生的其余内容,即 (+ 1 [])
,这是“延续”。 (我说得对吗?)所以我们调用 lambda k
和我刚才描述的延续 (+ 1 [])
。然后在函数中询问这是否是一个数字,如果不是,则执行“then”。我在这里“迷路”了,第二个 call/cc
做了什么?调用什么 (k 4)
来使整个事情的计算结果为 5
?
最佳答案
你很接近!我认为你所有的问题都是正确的。
您传递给 call/cc
的函数接受一个参数(在您的示例中为 k
),这是一种将值返回给当前延续的方法。 k
是一个参数的函数。当您使用一个值调用该函数时,该值将返回并代替 _
中的 (+ 1 _)
。
因此在您的示例中,(number? k)
永远不会为真,并且永远不会执行对 call/cc
的第二次调用。 (即使是,它也会因运行时错误而失败,其中 (- 1 k)
从 1 中减去一个函数。)所以它实际上执行了“else”分支:(k 4)
,它将 4 返回给 (+ 1 4)
,因此结果为 5。
希望这很清楚!
关于计划,电话/抄送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641926/
我在理解以下行为时遇到了一些麻烦 方案方案: (define c (dynamic-wind (lambda () (display 'IN)(newline)) (lambda
我多次尝试去理解 continuations 的概念和 call/cc 。每一次尝试都失败了。有人可以向我解释一下这些概念吗?最好用比维基百科或其他帖子中的例子更现实的例子。 我有网络编程和面向对象编
所以我正试图在 Scheme 中找出整个 call/cc 的东西。下面是我正在使用的代码: (+ 1 (call/cc (lambda (k) (if (number? k)
所以我正试图在 Scheme 中找出整个 call/cc 的东西。下面是我正在使用的代码: (+ 1 (call/cc (lambda (k) (if (number? k)
当我将我的应用程序从 Solaris C 编译器 sunstudio/v12/SUNWspro 迁移到 Linux C 编译器 GCC 版本 4.1.2 20080704 时,我看到了 CC 无法识别
这个程序正在运行,但是如何发送多个CC和BCC。 for($i = 0; $i \r\n"; $headers .= "Reply-To: \r\n"; $hedders .= "c
我的 makefile 中有以下内容: CC = cc -g -KPIC 当我运行 makefile 时,出现以下错误。 cc -g -KPIC -DORA817 -DIDA_VERSION='"
我有一个测试脚本,它在内部调用 make 来编译示例 C 程序。但由于某些未知的原因,编译没有进行。它抛出以下错误: 08-27 20:23:45.777 make program c
谁能帮助我使用 Java 代码打开带有收件人、抄送、主题和正文的 Outlook 邮件客户端。尝试使用以下代码 import java.awt.Desktop; import java.net.URI
尝试使用此命令安装 perl 的 Encode::Detect 模块时出现以下错误 perl -MCPAN -e "install Encode::Detect" 错误信息 cc: error try
在旧版 Office API 的文档中,我发现可以在用户撰写电子邮件时监视“收件人/抄送”字段的更改。这是否在 Office 365 的新 Javascript API 中公开?我似乎无法找到明确的答
我是一名优秀的程序员,十分优秀!