我正在尝试将 Scalaz EitherT 与 scala.concurrent.Future 一起使用。当试图在理解中使用它时:
import scalaz._
import Scalaz._
val et1:EitherT[Future, String, Int] = EitherT(Future.successful(1.right))
val et2:EitherT[Future, String, String] = EitherT(Future.successful("done".right))
val r:EitherT[Future, String, String] = for {
a <- et1
b <- et2
} yield (s"$a $b")
我收到以下缺少 Functor 和 Monad 实例的错误:
could not find implicit value for parameter F: scalaz.Functor[scala.concurrent.Future]
b <- et2
^
could not find implicit value for parameter F: scalaz.Monad[scala.concurrent.Future]
a <- et1
scalaz 是否为 Future 定义 Functor 和 Monad 的实例?如果没有,是否有任何其他库提供这些实例,或者我是否需要编写它们?