为什么!运算符与Arrow Monad理解中的.bind()相同



我们可以在Arrow monad压缩中使用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中是如何以及为什么这样工作的吗?

我在Kotlin关于运算符重载的文档中找到了答案:https://kotlinlang.org/docs/reference/operator-overloading.html

BindSyntax覆盖非操作员:

interface BindSyntax<F> {
suspend fun <A> Kind<F, A>.bind(): A
suspend operator fun <A> Kind<F, A>.not(): A =
bind()
}

相关内容

  • 没有找到相关文章

最新更新