Haskell の partitionEithers っぽいものが欲しくなって、ググッたらこれ URL にたどり着いたけど、この議論の結論(現状のScalazに存在するのか?など含めて)がよくわからない・・・あとでゆっくり読むか・・・
2013-01-28 16:09:29 via web
結局現在のScalaz 7.0.0-M7 には存在しなそう。
作ったら一応できた?(scalaz 7.0.0-M7)
def f[A, B, F[_]: MonadPlus](es: F[A \/ B]) = (for(-\/(y) <- es)yield y, for(\/-(x) <- es)yield x)
本当は、partitionEithersではなく、ScalazのValidationのListがあったときに、partitionValidation的なことをしたかったんですが・・・。上記のを汎用化して、EitherにもValidationにも対応させることできないですかね?*1
*2
追記:汎用化できたので、Scalazにpull reqした
https://github.com/scalaz/scalaz/pull/460
*1:EitherとValidationの共通の型クラス・・・ https://github.com/scalaz/scalaz/blob/v7.0.0-M7/core/src/main/scala/scalaz/Bitraverse.scala Bitraverse とか(?)を使って
*2: Bicopointed もしくは Bicomonad 的なものがないと無理?