scala - 缺少 Cats Functor[Future] 实例

标签 scala future monad-transformers scala-cats

我正在尝试使用 OptionT 来组合返回 Future[Option[T]] 的方法以进行理解。

import cats.data._
import cats.implicits._
import cats.instances.future._

for {
  data <- OptionT(repo.getData(id))
  ... 
}

我收到的编译器错误:

could not find implicit value for parameter F cats.Functor[scala.concurrent.Future]

这个recent example表明这是(曾经?)可能的。

pull request for adding OptionT 中的文档也是如此

cats Functor docs

我在这里缺少什么?

谢谢

最佳答案

通过导入 cats.implicits._您实际上已经导入了 cats.syntax.AllSyntaxcats.instances.AllInstances

尝试仅使用这些导入:

import cats.data._
import cats.implicits._

或者(根据您的需要):

import cats.data._
import cats.instances.future._

或更具体地说:

import cats.data._
import cats.instances.future.catsStdInstancesForFuture

您可能还需要:

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

注意:当然,您必须在生产环境中隐式提供实际的ExecutionContext

关于scala - 缺少 Cats Functor[Future] 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43388495/

相关文章:

dart - 中断 Dart Futures 链的最佳方式?

haskell - 带有免费/可操作 Monad 变形金刚的 Monad 堆栈渗透类?

haskell - 状态和 IO 单子(monad)

javascript - 如果您使用 SBT 0.10 或更高版本,如何缩小 Javascript

scala - 与Clojure的线程宏等效的Scala是什么?

java - 在 Java 中从 C++ 复制延迟/异步启动策略

C# 相当于 Scala Promise

scala - 在 Scala 中将映射展平为可变参数字符串列表

java - 如何将 JFROG 工件添加到 sbt.build 文件中?

haskell - 结合 RandT 和 MaybeT