Asl*_*986 3 scheme continuations
我认为我得到了一个延续(一般),但我无法理解它是如何在Scheme中使用的.
考虑这个例子(来自wikipedia call/cc)
(define (f return) (return 2) 3) (display (call/cc f)) ;=> 2
我不明白为什么:
延续是隐含的吗?对吗?
在这种情况下如何继续?
Asu*_*awa 13
延续是仍然要执行的"剩余计算".在您的具体的例子,你可以认为这为(display [])在那里[]是一个值被插入一个孔.也就是说,在call/cc被调用的点上,还有待完成的是对显示的调用.
(display [])
[]
call/cc
call/cc这个延续是什么,并将其放在一个可以像函数一样应用的特殊值.它将此值传递给其参数(此处f).在f,继续是必然的return.所以(return 2)基本上会插入2延续,即(display 2).
f
return
(return 2)
2
(display 2)
我不认为这个例子实际上非常有帮助,所以如果你有兴趣了解更多关于延续的话,我认为你应该阅读PLAI(见第七部分).另一个好消息来源是Dan Friedman的这些讲义.
归档时间:
13 年,7 月 前
查看次数:
797 次
最近记录: