Yan*_* Bo 8 concurrency continuations scala future scalaz
我一直在寻找异步操作的数据类型.
我发现除此之外还scalaz.ContT[Trampoline, Unit, ?]支持所有功能.scalaz.concurrent.FutureBindRec
虽然,也有更多的实用程序scalaz.concurrent.Future比scalaz.ContT[Trampoline, Unit, ?],比如一个应用型实例运行期货并行.
我认为这些实用程序也可以实现ContT[Trampoline, Unit, ?].
为什么作者创建一个新Future的scalaz-concurrent库而不是重用ContT?
冒着开玩笑的风险,一个关键的好处是,这Future是一个很多人都会认识和理解的命名概念,例如它有自己的维基百科页面。
我不认识ContT你所说的等效类型。我试图在 scalaz 文档中找到它,但它列在那里没有任何解释。我在哪里可以阅读有关此内容的更多信息,以及您如何知道它相当于 Future?
你说“一个 Applicative 实例并行运行 Futures”;多个ContT操作不会并行运行吗?这是一个关键特征Futures,并且可能是您问题的答案。
我现在看到这ContT是延续传递风格的实现,这scalaz.ContT[Trampoline, Unit, ?]是延续传递函数的一个特例,它可能同构于Future如果某些外部假设成立,它可能同构于 。
我认为你的问题的答案与许多其他特殊情况被重视的原因相同,因为它们可能被认为是更一般结构的一种情况:
Futures 是并行执行的,而我们一般不知道连续传递函数。(当然,可以按顺序执行 Future,就像在某些测试框架中所做的那样,但这不会被视为 Future 的常规实现)