Yeray Cabello
09/18/2019, 7:56 AMraulraja
09/18/2019, 8:19 AMraulraja
09/18/2019, 8:19 AMYeray Cabello
09/18/2019, 8:22 AMYeray Cabello
09/18/2019, 8:23 AMYeray Cabello
09/18/2019, 10:41 AMYeray Cabello
09/18/2019, 10:42 AMYeray Cabello
09/18/2019, 10:43 AMRestricted suspending functions can only invoke member or extension suspending functions on their restricted coroutine scope
Yeray Cabello
09/18/2019, 10:44 AMYeray Cabello
09/18/2019, 11:04 AMraulraja
09/18/2019, 12:28 PMraulraja
09/18/2019, 12:29 PMYeray Cabello
09/18/2019, 12:31 PMYeray Cabello
09/18/2019, 12:32 PMraulraja
09/18/2019, 12:33 PMraulraja
09/18/2019, 12:34 PMraulraja
09/18/2019, 12:34 PMraulraja
09/18/2019, 12:35 PMYeray Cabello
09/18/2019, 12:35 PMYeray Cabello
09/18/2019, 12:36 PMYeray Cabello
09/18/2019, 12:36 PMYeray Cabello
09/18/2019, 12:36 PMYeray Cabello
09/18/2019, 12:36 PMYeray Cabello
09/18/2019, 12:38 PMYeray Cabello
09/18/2019, 12:38 PMYeray Cabello
09/18/2019, 12:38 PMYeray Cabello
09/18/2019, 12:38 PMYeray Cabello
09/18/2019, 12:39 PMraulraja
09/18/2019, 12:44 PMraulraja
09/18/2019, 12:44 PMYeray Cabello
09/18/2019, 12:45 PMeffect
wrap around it.Yeray Cabello
09/18/2019, 12:45 PMraulraja
09/18/2019, 1:48 PMraulraja
09/18/2019, 1:50 PMsuspend fun foo(): Unit
val program: IO<Unit> = IO.effect { foo() }
val attemptedProgram: IO<Either<Throwable, Unit>> = program.attempt()
program.unsafeRunAsync { eitherThrowableOrUnit -> ... } // edge of the world
raulraja
09/18/2019, 1:50 PMraulraja
09/18/2019, 1:51 PMprogram
is lazy and a value you can pass around wherever you needYeray Cabello
09/18/2019, 4:34 PMYeray Cabello
09/19/2019, 5:58 AMYeray Cabello
09/19/2019, 5:59 AMYeray Cabello
09/19/2019, 6:02 AMYeray Cabello
09/19/2019, 6:04 AMval getInvoice: suspend () -> Either<Error, InvoiceDto> =
suspend {
database.transactionReadError {
invoiceRepository.getInvoiceForUser(initializePaymentRequestDto.invoiceNumber, user)
}
}
fun program(): IO<Either<Error, InvoiceDto>> =
IO.fx<Either<Error, InvoiceDto>> {
effect { getInvoice() }
}
Yeray Cabello
09/19/2019, 6:05 AMgetInvoice
and they all can fail.Yeray Cabello
09/19/2019, 6:07 AMYeray Cabello
09/19/2019, 6:10 AMYeray Cabello
09/19/2019, 6:10 AMYeray Cabello
09/19/2019, 6:22 AMraulraja
09/19/2019, 7:22 AMraulraja
09/19/2019, 7:24 AMraulraja
09/19/2019, 7:25 AMYeray Cabello
09/19/2019, 8:14 AMYeray Cabello
09/19/2019, 8:14 AMraulraja
09/19/2019, 8:36 AMraulraja
09/19/2019, 8:36 AMraulraja
09/19/2019, 8:36 AMraulraja
09/19/2019, 8:37 AMraulraja
09/19/2019, 8:37 AMYeray Cabello
09/19/2019, 8:44 AM