1
Как я хочу объединить Kleisli
, который работает на длинных методах Future
, который может завершиться неудачно Either
, мне нужно уложить эффект. Вот результирующий код для складывания эффекта в Kleisli. Есть ли в скалясе существующий комбинатор?Kleisli [Future, Context, /] to Kleisli [EitherT, Context, ...]
type FutureEitherT[A] = EitherT[Future, String, A]
def toKleisliEitherTFromDisjunction[A](f: Kleisli[Future, Context,String \/ A]) =
Kleisli[FutureEitherT, Context, A] { ctx => EitherT(f(ctx)) }
Я безуспешно пытался f.liftMK[FutureEitherT]
, но, к сожалению, третий типы в конструкторе Kleisli
типа по-прежнему является Either
.