如何编译或执行类似的操作?
import scala.concurrent.Future
import scalaz._
import Scalaz._
val ee: Future[Unit \/ Option[Int]] = Future(\/-(Option(1)))
OptionT.optionT(EitherT.eitherT(ee))
答案 0 :(得分:0)
您只需要明确传递类型(同样OptionT.optionT
似乎做了稍微不同的事情):
//could use a type lambda, but this is (IMO) slightly clearer
type FutureEither[A] = EitherT[Future, Unit, A]
new OptionT[FutureEither, Int](EitherT.eitherT[Future, Unit, Option[Int]](ee))
(我应该提一下我的scalaz-transfigure库作为一种稍微轻一些,更具推理性的方法来做monad变换器所做的事情;虽然它并不是非常成熟但是