, Validation(T) - ValidationNel[Throwable, T], Validation[T] -, Validation[E, T] , E .
, , , traverse ( traverseU, ). , :
scala> case class Foo(singleVal: ValidationNel[Throwable, String])
defined class Foo
scala> val x = some(Foo("hey".success))
x: Option[Foo] = Some(Foo(Success(hey)))
scala> val y = none[Foo]
y: Option[Foo] = None
scala> println(x.traverseU(_.singleVal))
Success(Some(hey))
scala> println(y.traverseU(_.singleVal))
Success(None)
, M traverse, N , M[A] N[M[B]] A => N[B] traverse (. ).