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

时间:2015-08-26 13:53:58

标签: scala monads scalaz monad-transformers

我正在尝试调整question的代码。除了我的方法返回scalaz.\/而不是scala.util.Either之外,一切都很好。所以现在我必须写一个像这样的猴子代码:

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

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

有没有办法在没有EitherT电话的情况下从Future[\/]构建toEither

1 个答案:

答案 0 :(得分:3)

您可以使用EitherT.eitherT(...)EitherT(...)

import scalaz._, Scalaz._

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

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