[英]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.