Jestem początkującym w pracy programowania funkcjonalnego i mam ciąg walidacjiNEL [A, B] i chciałbym zgromadzić błędy w nowym ValidationNEL [A, B]. Zależy to od faktu, że B jest zmienną strukturą danych pochodzącą ze starszego kodu, a zatem byłoby to oververbose do przechowywania Seq [B].Kumulowanie tylko błędów walidacji w Scalaz
wiem z innych stanowisk, które kumulując błędów i sukcesów jest możliwe dzięki metodzie sekwencji: Processing a list of Scalaz6 Validation
Z mojego zrozumienia, że wszystko sprowadza się do pisania właściwego aplikacyjnych i może prawidłowego przemieszczenia.
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)
}
Jak zacząć? Kiedy próbowałem zajrzeć do kodu źródłowego Scalaz, aby dowiedzieć się, jak wdrożyć moją aplikację, byłem bardzo zdezorientowany. Nie byłem nawet w stanie dowiedzieć się, który aplikator pozwala gromadzić zarówno niepowodzenia, jak i powodzenie w walidacji.
Czy próbujesz przejść od Seq [ValidtionNEL [A, B]] do ValidationNEL [A, Seq [B]] lub coś podobnego? – Noah
no od Seq [ValidtionNEL [A, B]] do ValidationNEL [A, B] – Edmondo1984
Tak więc ValidationNEL to tylko sprawdzanie poprawności [NonEmptyList [A], B], więc nie możesz zrobić tego, o co pytasz, chyba że możesz dodać B razem (ints , listy itd.). – Noah