scala scalaz

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.