Tag: continuation passing

如何使用call / cc实现c#5.0中的新异步function?

我一直在关注有关c#5.0中新的asyncfunction的新公告。 我对继续传递样式以及新的c#编译器对Eric Lippert的post中的代码片段所做的转换有基本的了解: async void ArchiveDocuments(List urls) { Task archive = null; for(int i = 0; i < urls.Count; ++i) { var document = await FetchAsync(urls[i]); if (archive != null) await archive; archive = ArchiveAsync(document); } } 我知道有些语言通过call-with-current-continuation( callcc )本地实现continuation,但我真的不明白它是如何工作的或者它究竟是做什么的。 所以这就是问题:如果安德斯等人。 我决定咬紧牙关,只是在c#5.0中实现callcc而不是async / await特殊情况,上面的代码片段会是什么样子?