Mapa en fallo de validación de Scalaz
(2)
Hay un functor en FailProjection. Para que pudieras hacer
v.fail.map(f).validation
(falla al escribir como FailProjection, validación para salir de él)
Alternativamente
v.fold(f(_).failure, _.success)
Ambos un poco verbos. Tal vez alguien más familiarizado con scalaz pueda encontrar algo mejor.
import scalaz._
import Scalaz._
"abc".parseInt
Esto devolverá una Validation[NumberFormatException, Int]
. ¿Hay alguna manera de aplicar una función en el lado de la falla (como toString
) para obtener una Validation[String, Int]
?
Hay un par de métodos <-:
y :->
definidos en MAB[M[_,_], A, B]
que se mapean en el lado izquierdo y derecho de cualquier M[A, B]
siempre que haya una Bifunctor[M]
. Validation
pasa a ser un bifunctor, por lo que puede hacer esto:
((_:NumberFormatException).toString) <-: "123".parseInt
El tipo de inferencia de Scala generalmente fluye de izquierda a derecha, por lo que en realidad esto es más corto:
"123".parseInt.<-:(_.toString)
Y requiere menos anotación.