Convert List[Either[A, B]] to Either[List[A], List[B]]

前端 未结 3 1326
甜味超标
甜味超标 2021-01-12 09:49

How to convert List[Either[String, Int]] to Either[List[String], List[Int]] using a method similar to cats sequence? For example, xs.sequenc

3条回答
  •  遥遥无期
    2021-01-12 10:35

    Try

    xs.traverse(_.toValidated.bimap(List(_), identity)).toEither
    
    // List(Left("error1"), Left("error2")) => Left(List("error1", "error2"))
    // List(Right(10), Right(20))           => Right(List(10, 20))
    // List(Right(10), Left("error2"))      => Left(List("error2"))
    

提交回复
热议问题