我有一个monad堆栈,用于使用cat monads变换器实现的组件的响应:
type FutureEither[A] = EitherT[Future, Error, A]
type FutureEitherOption[A] = OptionT[FutureEither, A]
结果是有效的:
Future[Either[Error, Option[A]]]
如何以正确的方式从此堆栈中获取值或错误?如何以适当的方式并行执行多个调用的结果?例如,在这种情况下:
def fooServiceCall: FutureEitherOption[Foo]
def barServiceCall(f: Option[Foo]): FutureEitherOption[Bar]
for {
r1 <- fooServiceCall
r2 <- barServiceCall(r1)
} yield r2