Alvaro Blazquez checa
11/23/2021, 9:09 AMValidated.applicative(validationSemigroup).tupled(Valid("foo"), Valid("bar")).fix()
Alvaro Blazquez checa
11/23/2021, 9:09 AMval validationSemigroup: Semigroup<List<WebError>> = object : Semigroup<List<WebError>> {
override fun List<WebError>.combine(b: List<WebError>): List<WebError> =
Stream.concat(stream(), b.stream()).toList()
}
Alvaro Blazquez checa
11/23/2021, 9:10 AMAlvaro Blazquez checa
11/23/2021, 9:12 AMValid("foo").zip(Valid("bar"), ::Pair)
simon.vergauwen
11/23/2021, 9:12 AMval validationSemigroup: Semigroup<List<WebError>> = object : Semigroup<List<WebError>> {
override fun List<WebError>.combine(b: List<WebError>): List<WebError> =
this + b
}
Valid("foo").zip(validationSemigroup, Valid("bar"), ::Pair)
Alvaro Blazquez checa
11/23/2021, 9:12 AMsimon.vergauwen
11/23/2021, 9:12 AMStream.concat
inside Semigroup
you can just use List.plus
from Kotlin.simon.vergauwen
11/23/2021, 9:12 AMValidatedNel
you can omit the semigroup
parameter to zip
.simon.vergauwen
11/23/2021, 9:13 AMList
inside Invalid
means it can also contain an empty list of errors, which typically isn’t possible.simon.vergauwen
11/23/2021, 9:14 AMNonEmptyList
is just like List
but has a minimum size of 1
instead of 0
. It has special support for Validated
in for example zip
.Alvaro Blazquez checa
11/23/2021, 9:14 AMAlvaro Blazquez checa
11/23/2021, 9:15 AMAlvaro Blazquez checa
11/23/2021, 9:16 AMAlvaro Blazquez checa
11/23/2021, 9:16 AM