Как превратить List
из Eithers
в Either
из Lists
, используя MonadPlus.separate
?
В этом ответе автор утверждает это решение, но не может предоставить импорт или полный пример:
Если scalaz является одной из ваших зависимостей, я бы просто использовал отдельный:
val el : List[Either[Int, String]] = List(Left(1), Right("Success"), Left(42)) scala> val (lefts, rights) = el.separate lefts: List[Int] = List(1, 42) rights: List[String] = List(Success)
Это реально работающее решение? Я вижу, что MonadPlus
имеет функцию separate
, но мне так и не удалось заставить ее работать.
ps: я знаю, что могу добиться этого без scalaz, например, в примере ниже. Однако в этом вопросе я спрашиваю, как использовать scalaz.MonadPlus.separate
для достижения этой цели.
(lefts, rights) = (el.collect { case Left(left) => left }, el.collect { case Right(right) => right })
import scalaz._, Scalaz._
- person Michael Zajac   schedule 27.04.2016