gpt4 book ai didi

functional-programming - 有人可以解释一下方案中的这种延续吗?

转载 作者:行者123 更新时间:2023-12-04 08:42:46 24 4
gpt4 key购买 nike

我正在学习延续,但我无法理解这段代码。为什么会进入无限循环?

(let ((cont #f))
(call/cc (lambda (k)
(set! cont k)))
(cont #f))

最佳答案

逐行:

  • 我们定义局部变量 cont
  • 我们用当前的延续调用一些 lambda 函数,也就是说,我们将当前的延续作为参数传递给 lambda 函数。当前延续是一个有 1 个参数的函数,然后这个参数被用作 call/cc 的“返回值” (这里最终被忽略)。
  • 所以k这里表示一切,之后会发生,在我们的例子中,意义接近 (lambda (call/cc-retval) (let () call/cc-retval (cont #f))) .我们设置cont这种延续的值(value)。 call/cc返回。
  • cont现在是一个表示延续的函数,它的参数是“call/cc 的返回值”,我们只是调用该函数,参数被忽略,我们需要调用 (cont #f)再次。

  • 因此,我们最终得到的是无限循环。

    关于functional-programming - 有人可以解释一下方案中的这种延续吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1823731/

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