#kotlin #arrow-kt
#kotlin #стрелка-kt
Вопрос:
Один из способов bind()
понимания монады со стрелкой — это «кричать» (третий пример):
/**
* All possible approaches to running [Kind] in the context of [Fx]
*
* ```
* fx {
* val one = just(1).bind() // using bind
* val (two) = just(one 1) // using destructuring
* val three = !just(two 1) // yelling at it
* }
* ```
*/
Поскольку !
оператор Kotlin используется для отрицания логического значения, можете ли вы объяснить, как и почему это работает таким образом в Arrow?
Ответ №1:
Я нашел ответ в документе Kotlin о перегрузке оператора: https://kotlinlang.org/docs/reference/operator-overloading.html
BindSyntax
переопределяет оператор not:
interface BindSyntax<F> {
suspend fun <A> Kind<F, A>.bind(): A
suspend operator fun <A> Kind<F, A>.not(): A =
bind()
}