有谁知道 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/