gpt4 book ai didi

计划,电话/抄送

转载 作者:行者123 更新时间:2023-12-02 22:34:29 30 4
gpt4 key购买 nike

所以我正试图在 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com