【发布时间】:2016-11-27 20:48:45
【问题描述】:
我试图理解延续传递和 Call-with-current-continuation。 根据此页面: https://en.wikipedia.org/wiki/Monad_(functional_programming)#Continuation_monad CC方法的调用实现如下:
call_cc :: ((a -> (b -> r) -> r) -> (a -> r) -> r) -> (a -> r) -> r
call_cc f k = f (\t x -> k t) k
正如signature 和implementation 所述。
但是,我们可以看到x 参数在这里从未使用过。
这是否意味着传递给f 的任何延续总是被忽略,而初始延续k 总是替换它?
在那种情况下,这是否意味着call-with-cc 只能调用一个只有一层而不是更多的函数? (因为在正常控制流中调用的下一个函数将被忽略,并带有延续 x)
在那种情况下,它似乎非常有限,它的实际用途是什么?
【问题讨论】:
标签: haskell functional-programming continuations