continuations

    4热度

    1回答

    我有一些麻烦了解以下 计划程序的行为: (define c (dynamic-wind (lambda() (display 'IN)(newline)) (lambda() (call/cc (lambda (k) (display 'X)(newline) k))) (lambda() (display 'OUT)(n

    4热度

    1回答

    使用Scala 2.8的CPS编译器插件,有两个魔术控件reset和shift。重置界定延续,并且转移捕捉延续。 有一个使用CPS和NIO的example,使用嵌套重置作为“分叉”类型......? 我并不完全理解嵌套复位的目的,有什么影响?

    13热度

    4回答

    基本上我想这个转换: def data(block: T => Unit) 到Stream(dataToStream是为此转换的假想功能): val dataStream: Stream[T] = dataToStream(data) 我想这问题可以通过延续解决: // let's assume that we don't know how data is implemented //

    13热度

    2回答

    有谁知道如果call/cc可以用lambdas和闭包来实现吗? 看来call/cc会中断程序的流程(如异常),但lambda表达式和闭包不能做到这一点。因此我认为call/cc不能通过lambdas和闭包来实现。 还有什么想法?

    4热度

    2回答

    是否有任何方法可以在CPS中使用尾递归函数而不抛出StackOverflow? import scala.util.continuations._ object CPSStackOverflow { def main(args: Array[String]) = { reset { def recurse(i: Int): Unit @suspendable =

    21热度

    5回答

    上Continuation维基百科的文章说: “在支持关闭任何语言,可以写在延续传递风格的程序和手动执行呼叫/立方厘米。” 要么这是真的,我需要知道如何去做,否则它是不正确的,该声明需要纠正。 如果这是真的,请告诉我如何在Lua中实现call/cc,因为我看不到如何。 我想我可以手动实现call/cc,如果Lua具有corruptine.clone函数,如here所解释的那样。 如果闭包不足以实现

    0热度

    1回答

    我正在尝试使用单声道在C#中使用微线程消息传递库。从Mono 2.4开始,显然在'Mono.Tasklets'下有延续性(不是收益率)。然而,这些缺少我能找到的任何文档,虽然我通常使用它们,但偶尔会发生(但可再现)崩溃,调试器将不会附加到这些崩溃。 我的具体问题是: 有谁知道马克()函数是什么,在哪里/当我需要调用它呢?它似乎是一次性初始化,但我不知道为什么那时不在构造函数中。 使用多个延续有限制

    6热度

    1回答

    我试图使用类似C#的yield return各种斯卡拉实现(即this one)与 “为” -constructions如: private def permutations[T](s: Vector[T]) = { def swap(i: Int, j: Int) { val tmp = s(i) s.set(i, s.get(j)) s.set(j, t

    16热度

    4回答

    是否有可能含有序列yield语句(或包含这样的方法的类),使得当再水合类,所生成的迭代器的内部状态被保持的方法?

    63热度

    4回答

    这是续单子是如何定义的: newtype Cont r a = Cont { runCont :: (a -> r) -> r } instance Monad (Cont r) where return a = Cont ($ a) m >>= k = Cont $ \c -> runCont m $ \a -> runCont (k a) c 你能解释一下如何以及为