Josh
04/08/2021, 4:27 PM0.11.0
to 0.13.1
. How would I write this function now:
suspend fun buildPerson(): Either<DomainError, Person> {
val name: Either<DomainError, Name> = getName()
val address: Either<DomainError, Address> = getAddress()
val dob: Either<DomainError, Date> = getDOB()
return Either.applicative<DomainError>().tupledN(name, address, dob).map {
Person(name = it.a, address = it.b, dob = it.c)
}
}
Follow-up: Can I accomplish this in parallel (assuming get*
function are suspending
)?raulraja
04/08/2021, 4:47 PMraulraja
04/08/2021, 4:47 PMJosh
04/08/2021, 5:14 PMsimon.vergauwen
04/08/2021, 5:15 PMfun buildPerson(): Either<DomainError, Person> =
getName().zip(
getAddress(),
getDOB()) { name, address, dob ->
Person(name, address, dob)
}
Or you could user either { }
of course also.