How to transform Either[Future[A], Future[B]] to Future[Either[A, B]]

ぐ巨炮叔叔 提交于 2019-12-05 03:25:53

have compiled the answers from the comments for reader convenience:

1: you can do it in plain scala (using cats.Functor for the definition here), courtesy of @wheaties & @jean-philippe-pellet

def eitherFmap[F[_], A, B](either: Either[F[A], F[B])(implicit F: Functor[F]): F[Either[A, B]] =   
either.fold(f => F.map(f)(Left(_)), f => F.map(f)(Right(_)))

2: cats bisequence refused to compile because of conflicting imports: a single import is enough here - courtesy of @kolmar

import cats.instances._
...
val futureOfEither = eitherOfFutures.bisequence

3: read the cats import guide to avoid the issue in the future - courtesy @peter-neyens

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!