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.