问题标签 [arrow-kt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 为什么使用 Arrow 的 Options 而不是 Kotlin 可为空的
我正在查看此处找到的 Arrow 库。为什么要使用Option
类型而不是 Kotlin 的内置可空值?
android - 如何使用 Arrow 创建自己的数据类型
使用箭头创建自己的数据类型的步骤是什么。
使用Option
提供的扩展构造函数(如Some(data)
or )很简单None
。但是,如何创建自己的数据类型,它具有像map()
or这样的函数运算符flatMap()
?
kotlin - 将 Spring Webflux Mono 转换为 Either,最好不阻塞?
我正在使用 Kotlin和Arrow以及来自. 我想做的是将Mono实例转换为Either。spring-webflux
在响应成功或返回错误时Either
调用创建实例。Either.right(..)
WebClient
Either.left(..)
WebClient
我正在寻找的是一种Mono
类似于Either.fold(..)的方法,我可以在其中映射成功和错误的结果并返回与 a 不同的类型Mono
。像这样的东西(伪代码不起作用):
一个人应该怎么走?
monads - 为什么验证会违反单子定律?
在SO上,解释了为什么像 scalaz、cats (Scala) 或 Arrow (Kotlin) 这样的验证不能是 monad。
据我了解,这是因为他们已经根据应用函子对 monad 进行了建模,并且 Validation 作为应用程序(收集所有无效)的所需行为与 Validation 作为 monad 的所需行为不同(序列验证并在首先无效)。因此,当您希望快速失败时,您需要将验证转换为 any(这是一个 monad)。
在https://groups.google.com/forum/#!msg/scalaz/IWuHC0nlVws/syRUkXJklWIJ上,他们提到验证不是单子的原因,是因为以下属性不成立:
但是看看 monad 的定义,上面的属性不是monad 法则的一部分。那么,这是因为 monad 是根据应用程序实现的,还是上述属性是成为 monad 的先决条件?
这种更高层次的推理对我来说都是新事物,但在我对 FP 的有限理解中,我可以有一个验证数据类型,它在用作应用程序(累积无效)时具有一种行为,而在用作 monad 时具有另一种行为(快速失败)。
functional-programming - 使用箭头 kt 的列表理解时出现 ClassCastException
我正在尝试在 Kotlin 中使用带有守卫的列表理解。当我运行以下代码时,我得到一个ClassCastException
似乎没有相关的地方。
这是堆栈跟踪:
第 20 行是开始的行val result
。
我怎样才能使这种理解起作用?
我在 Java 1.8.0_131 上使用 Kotlin 1.2.41 和 Arrow-Kt 0.7.2。
kotlin - 智能投射 Arrow-kt 选项
我正在尝试从任何 Any 变量智能转换选项,以便我可以确定选项是否为空,但是 IDE 指示 Option<*> 不能智能转换,因为它是在不同的模块中声明的。
kotlin - 使用 Kotlin Arrow 库生成镜头
我正在阅读“Functional Kotlin”,它描述了使用注释生成镜头。
@镜头
Arrow 生成与我们的数据类具有的构造函数参数一样多的镜头,使用名称约定classProperty
并在同一个包中,因此不需要额外的导入
但是当我尝试使用@lenses
注释时,找不到它。
@光学
在箭头文档中,我注意到他们使用了@optics
注释
这将创建一个Memory.Companion.size
镜头。
由于我无法在@lenses
注释上找到任何其他材料,这让我想知道这是否可能是一个已弃用的实现。
我的预感是正确的还是我在这里遗漏了什么?
kotlin - Kotlin 编写函数列表
目前我正在使用一个名为arrow的库中的compose,它以这种方式定义。
我想要做的是从一个列表中组合函数,所以我假设这样简单的东西会起作用。
但我收到类型错误:
类型推断失败:无法在 inline infix fun ((IP) -> R).compose(crossinline f: (P1) -> IP): (P1) -> R 中推断类型参数 IP 没有以下替换接收器:(任何) -> 任何参数:((Nothing) -> Any) 接收者:(Nothing) -> 任何参数:((Nothing) -> Nothing) 可以应用于接收者:Function1<, Any> 参数:(Function1<, Any >)
所以我尝试:
我明白了:
类型不匹配:推断类型为 KFunction1<@ParameterName Option, Option> 但 (Any) -> Any 是预期的
类型不匹配:推断类型是 (Int) -> Option 但 (Any) -> Any 是预期的
类型不匹配:推断类型是 (Int) -> Int 但 (Any) -> Any 是预期的
任何帮助表示赞赏。我不介意我最终是否必须编写自己的 compose 版本。我只需要能够编写函数列表。
编辑:
这没有问题:
如果我有一个函数列表而不是这样写,我只是想达到相同的结果。
kotlin - kotlin 箭头函数式编程中的 Monad 是什么?
有人可以解释函数式编程Monad
的概念吗?Arrow
kotlin - Kotlin + Arrow + Gson = 无?
我在 Kotlin 中有一个简单的图书和借阅者图书馆的模型,如果图书有借阅者,则在其中签出图书。我使用箭头选项来编码借款人的缺席/存在:
我在将这些对象序列化/反序列化到 Gson 中的 JSON 时遇到问题 - 特别是在一本书Option<Borrower>
中对 JSON的表示:null
我的反序列化代码:
我得到一个空列表。几乎相同的jsonStringToBorrowers
工作正常。
有人可以指出我正确的方向吗?
是否会使用不同的 JSON 库,kotlinx.serialization
或者Klaxon
是一个更好的主意,他们是如何做的null <-> None
?
谢谢!