gpt4 book ai didi

scala - scalaz.concurrent.Future 与 scalaz.ContT[Trampoline, Unit, 相比有什么好处?]

转载 作者:行者123 更新时间:2023-12-04 08:47:44 26 4
gpt4 key购买 nike

我正在寻找一种用于异步操作的数据类型。

我发现 scalaz.ContT[Trampoline, Unit, ?]支持 scalaz.concurrent.Future 中的所有功能,此外还有 BindRec .

尽管如此,scalaz.concurrent.Future 还有更多实用程序。比scalaz.ContT[Trampoline, Unit, ?] ,例如Applicative 实例并行运行 Futures。

我认为这些实用程序可以用于 ContT[Trampoline, Unit, ?]以及。

作者为什么要新建Future基于 scalaz-concurrent库,而不是重用 ContT ?

最佳答案

冒着开玩笑的风险,一个关键的好处是 Future是一个很多人都会认识和理解的命名概念,例如it has its own wikipedia page .

我不认识 ContT你说的类型是等价的。我试图在 scalaz 文档中找到它,但它是 listed there with no explanation .我在哪里可以阅读更多关于这个的信息,你怎么知道它等同于一个 future ?

你说“一个 Applicative 实例并行运行 Futures”;会多个 ContT操作不能并行运行?这是 Futures 的一个关键特性,并且可能会回答您的问题。

更新:

我现在看到 ContT是延续传递风格的实现,即 scalaz.ContT[Trampoline, Unit, ?]是延续传递函数的一个特例,它可能与 Future 同构,如果某些外部假设成立。

我认为您的问题的答案与许多其他特殊情况被突出的原因相同,因为它们可能被认为是更一般结构的一种情况:

  • 更容易讨论,更容易命名
  • 它更有效,因为实现可以利用一些在一般结构中可能不适用的特殊情况
  • 更容易推理,例如在这里我们可以确定 Future s 是并行执行的,而我们通常不知道关于继续传递函数的内容。 (当然,可以按顺序执行 Futures,就像在一些测试框架中所做的那样,但这不会被视为 Future 的常规实现)
  • 这是一个有用的概念,程序员可以突出显示它并使其易于访问
  • 关于scala - scalaz.concurrent.Future 与 scalaz.ContT[Trampoline, Unit, 相比有什么好处?],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43143171/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com