Sono un principiante nel lavoro di programmazione funzionale e ho una sequenza di ValidationNEL [A, B] e vorrei accumulare gli errori in un nuovo ValidationNEL [A, B]. Questo dipende dal fatto che B è una struttura di dati mutabile proveniente dal codice legacy, e quindi sarebbe opportuno mantenere un Seq [B].Accumulare solo errori di validazione in Scalaz
So per altri posti che cumulando errori e il successo è possibile attraverso il metodo della sequenza: Processing a list of Scalaz6 Validation
Dalla mia comprensione tutto tratta di scrivere un applicativo corretto e forse un Traverse corretta.
trait MA[M[_], A] extends PimpedType[M[A]] with MASugar[M, A] {
def sequence[N[_], B](implicit a: A <:< N[B], t: Traverse[M], n: Applicative[N]): N[M[B]] =
traverse((z: A) => (z: N[B]))
def traverse[F[_],B](f: A => F[B])(implicit a: Applicative[F], t: Traverse[M]): F[M[B]] =
t.traverse(f, value)
}
Come si avvia? Quando ho provato a cercare nel codice sorgente Scalaz per scoprire come implementare la mia Applicativo, mi sono estremamente confuso. Non ero nemmeno in grado di scoprire quale applicativo consente di accumulare sia i fallimenti che il successo in Validation.
Stai cercando di passare da Seq [ValidtionNEL [A, B]] a ValidationNEL [A, Seq [B]] o qualcosa di simile? – Noah
no da Seq [ValidtionNEL [A, B]] a ValidationNEL [A, B] – Edmondo1984
Quindi ValidationNEL è solo Validation [NonEmptyList [A], B] quindi non puoi fare quello che chiedi a meno che tu non possa aggiungere B's insieme (int , elenchi, ecc.). – Noah