Я использую библиотеку arrow-kt и пытаюсь использовать Either
и IO
в одном и том же для понимания.
Скажем, у меня есть следующий фрагмент кода:
IO.monad().binding {
val ans: Either<Error, Data> = someFunctionThatReturnsEitherWrappedInIO().bind()
}
Теперь я хотел бы использовать привязку к ans
:
val data: Data = ans.bind() // My intent
Возможно ли сделать это в рамках первой части кода?
В настоящее времяЯ пытаюсь вложить привязку Either
в область привязки ввода-вывода, но я не уверен, что это хорошая практика:
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()
}