我使用 arrow-kt 库,我正在尝试使用Either
并IO
在同一库中进行理解。
假设我有下一段代码:
IO.monad().binding {
val ans: Either<Error, Data> = someFunctionThatReturnsEitherWrappedInIO().bind()
}
现在,我想使用绑定ans
:
val data: Data = ans.bind() // My intent
是否有可能在第一段代码的范围内做到这一点?
目前我正在尝试Either
在 IO 绑定范围内嵌套一个绑定,但我不确定这是一个好习惯:
IO.monad().binding {
val ans: Either<Error, Data> = someFunctionThatReturnsEitherWrappedInIO().bind()
val ansB: Either<Error, OtherData> = someOtherFunctionThatReturnsEitherWrappedInIO().bind()
val newData: Either<Any, NewData> = Either.monad<Any>().binding {
val data: Data = ans.bind()
val otherData: OtherData = ansB.bind()
NewData(data.a, otherData.lala)
}.fix()
}