Scalaz:ValidationNel地图到ValidationNel of Map

时间:2014-11-10 19:12:20

标签: scala validation scalaz

如何转换

val source: Map[MyKeyType, ValidationNel[MyErrorType, MyValueType]]

val target: ValidationNel[MyErrorType, Map[MyKeyType, MyValueType]]

同时捕获所有验证错误?

2 个答案:

答案 0 :(得分:3)

如果您有两件事情,可以使用sequence将类型F[G[A]]翻出来(即进入G[F[A]]):Applicative G个实例和Traverse的{​​{1}}实例。在这种情况下,Scalaz提供现成的,因此您只需编写Fsource.sequenceU部分表示这是一种使用U技巧来帮助Scala类型推断的方法系统)。

例如:

Unapply

错误将按预期累积。

答案 1 :(得分:2)

您想要sequenceU

val target = source.sequenceU