Tôi là người mới bắt đầu trong công việc lập trình hàm và tôi có một chuỗi ValidationNEL [A, B] và tôi muốn tích lũy các lỗi vào một ValidationNEL mới [A, B]. Điều này phụ thuộc vào thực tế rằng B là một cấu trúc dữ liệu có thể thay đổi được từ mã kế thừa, và do đó, nó sẽ quá tải để giữ Seq [B].Chỉ tích lũy các lỗi xác nhận trong Scalaz
Tôi biết từ bài viết khác cumulating lỗi và thành công là có thể thông qua các phương pháp trình tự: Processing a list of Scalaz6 Validation
Từ hiểu biết của tôi tất cả đi để viết một applicative phù hợp và có thể là một Traverse thích hợp.
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)
}
Làm cách nào để bắt đầu? Khi tôi cố gắng xem xét mã nguồn Scalaz để tìm hiểu cách thực hiện Ứng dụng của tôi, tôi đã vô cùng bối rối. Tôi thậm chí không thể tìm ra ứng dụng nào cho phép tích lũy cả thất bại lẫn thành công trong Xác thực.
Bạn đang cố gắng để đi từ Seq [ValidtionNEL [A, B]] để ValidationNEL [A, Seq [B]] hoặc một cái gì đó tương tự? – Noah
không từ Seq [ValidtionNEL [A, B]] tới ValidationNEL [A, B] – Edmondo1984
Vì vậy ValidationNEL chỉ là Validation [NonEmptyList [A], B] nên bạn không thể làm những gì bạn yêu cầu trừ khi bạn có thể thêm B cùng nhau (ints , danh sách, v.v.) – Noah