Tag: continuations

什么叫/ cc?

我已经多次尝试了解延续的概念,并且呼吁/ cc 。 每一次尝试都是失败的。 有人可以解释我这些概念,理想情况下比维基百科或其他SOpost更实际的例子。 我有Web编程和面向对象的背景。 我也了解6502程序集,并与Erlang有一个小小的争执。 不过,我还是不能把头绕在call / cc上。

C#5asynchronous/等待 – 它是*并发*?

我一直在考虑C#5中的新asynchronous的东西,并提出了一个特定的问题。 我知道await关键字是一个简洁的编译器技巧/语法糖来实现continuation的传递 ,其余的方法被分解成Task对象并排队等待运行,但是控制返回到调用方法。 我的问题是,我听说目前这一切都在一个单一的线程。 这是否意味着这种asynchronous的东西实际上只是将继续代码转换为Task对象,然后在每个任务完成之后调用Application.DoEvents() ,然后再启动下一个任务? 还是我错过了什么? (问题的这一部分是修辞 – 我完全知道我错过了什么 :)) 提前谢谢了。

延续和callback有什么区别?

我一直在浏览整个networking,寻找关于延续的启示,想到最简单的解释会如此完全混淆像我这样的JavaScript程序员,令人惊讶。 当大多数文章用Scheme中的代码解释延续或使用monad时,情况尤其如此。 现在我终于认为我已经理解了延续的本质,我想知道我所知道的是否是事实。 如果我的想法是真实的,那么这是无知而不是启蒙。 所以,这就是我所知道的: 在几乎所有的语言中,函数显式地将值(和控制)返回给调用者。 例如: var sum = add(2, 3); console.log(sum); function add(x, y) { return x + y; } 现在,在使用第一类函数的语言中,我们可以将控制和返回值传递给callback函数,而不是显式地返回给调用者: add(2, 3, function (sum) { console.log(sum); }); function add(x, y, cont) { cont(x + y); } 因此,不是从函数返回值,而是继续使用另一个函数。 所以这个函数被称为第一个的延续。 那么延续和callback有什么区别呢?

asynchronous是否等待关键字相当于一个ContinueWith lambda?

有人可以请客气,以确认我是否已经正确理解Async等待关键字? (使用CTP版本3) 到目前为止,我已经计算出,在方法调用之前插入await关键字本质上是做了两件事情,它创build了一个立即返回和B.它创build了一个“继续”,在完成asynchronous方法调用时被调用。 在任何情况下,延续是该方法的代码块的其余部分。 所以我想知道的是,这两个代码在技术上是否等价,如果是这样,这基本上是否意味着await关键字与创buildContinueWith Lambda(即:它基本上是一个编译器快捷方式)相同? 如果不是,有什么区别? bool Success = await new POP3Connector( "mail.server.com", txtUsername.Text, txtPassword.Text).Connect(); // At this point the method will return and following code will // only be invoked when the operation is complete(?) MessageBox.Show(Success ? "Logged In" : "Wrong password"); VS (new POP3Connector( "mail.server.com", txtUsername.Text, txtPassword.Text ).Connect()) .ContinueWith((success) => MessageBox.Show(success.Result ? […]