如何将 scalaz.EitherT.fromEither 应用于 scalaz.\/?

How apply scalaz.EitherT.fromEither to scalaz.\/?

我正在尝试根据 question 改编我的代码。一切都很好,除了我的方法 returns scalaz.\/ 而不是 scala.util.Either。所以现在我必须写一个像这样的猴子代码:

def myFunction:Future[LeftBad \/ RightGood] = ...

val result = for {
    x <- fromEither(myFunction.map(_.toEither))
} yield {
  ...
}
result.run
//etc

有没有一种方法可以在不调用 toEither 的情况下从 Future[\/] 构造 EitherT

您可以使用 EitherT.eitherT(...) or just EitherT(...):

import scalaz._, Scalaz._

val futDisjunction: Future[String \/ Int] = Future.successful(\/-(5))

scala> EitherT(futDisjunction)
// scalaz.EitherT[scala.concurrent.Future,String,Int]