[英]Can call-with-current-continuation be implemented only with lambdas and closures?
有没有人知道call/cc
是否只能用lambdas和闭包实现?
似乎call/cc
中断了程序的流程(就像异常一样),但lambdas和closures不能这样做。 因此我认为call/cc
不能通过lambdas和closures实现。
还有什么想法吗?
在Scheme中,您可以在转换为延续传递样式(CPS)时使用lambdas实现call/cc
。 转换为CPS时,每次出现的call/cc
都可以替换为以下等价物:
(lambda (f k) (f (lambda (v k0) (k v)) k))
其中k
是要保存的连续符,并且(lambda (v k0) (kv))
是恢复此连续的转义过程(无论在被调用时有效的连续k0
被丢弃)。
所以,回答你对Scheme的问题:是的,可以做到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.