lisp - call-with-current-continuation 只能用 lambda 和闭包来实现吗?

标签 lisp computer-science scheme continuations callcc

有谁知道 call/cc 是否可以只用 lambda 和闭包来实现?

似乎 call/cc 中断了程序的流程(就像一个异常),但 lambda 和闭包不能那样做。因此我认为 call/cc 不能通过 lambda 和闭包来实现。

还有什么想法吗?

最佳答案

这个问题不是特别清楚,因为“只用 lambda 和闭包实现”到底是什么意思?

在任何情况下,通过手动写入 continuation passing style 可以在任何带有闭包的语言中使用延续。 .然后可以通过扩展编译器来自动翻译成这种形式,Lisps 通常允许在用户级别通过宏来实现。例如参见 cl-cont ,一个为 Common Lisp 实现延续的库,这是一种没有内置延续的语言。

像 Scheme 中的高效普适延续很可能在直接处理程序堆栈的较低级别上实现,但这不是必需的,只是一种优化。

关于lisp - call-with-current-continuation 只能用 lambda 和闭包来实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811448/

相关文章:

vector - 获取向量的区间

types - 在 common-lisp 中,类型之间的关系是如何定义的?

Clojure 中的宏、评估和引用

Emacs:defun 或 defmacro 主体中的代码不能引用周围的词法变量?

algorithm - 相同的 BST

c++ - 循环图中的对称轴

c - 使用 C 宏制作 lisp 求值器

recursion - 这个 Racket 程序是如何使用 add1 的?

lisp - 请批评我的 Lisp

computer-science - 网络程序员的信号处理