问题标签 [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.
validation - Kotlin 箭头 kt 在 Validated 和 ValidatedNel 上缺少 flatMap
我真的在努力使用箭头库的 Validated 类型。
我不明白的是:为什么没有flatMap
或flatten
在使用 Validated 时?
我来自“任何一个世界”,这根本不是问题。但是我需要组合多个错误,所以我的核心验证类型是ValidatedNel<Error, Data>
最后。
在我的代码示例中,我有一个生成 Either 的函数 - 我使用这些低级步骤来创建我需要的元素或错误。
但是要结合所有累积的错误进行正确的验证,我迟早需要ValidatedNel
类型。
相反,我想要的是:
我只是不明白为什么验证类型不支持像 flatMap 这样的简单操作。
有人知道该怎么做吗?
kotlin - 如何从 Try in arrow-kt 中抽象出来
我在我的 Kotlin 后端项目中使用 Arrow。我有这样的存储库:
现在我想更进一步,从具体Try
类型中抽象出来,Kind<F, Option<User>>
而不是返回。我能够用这段代码做到这一点:
但现在我正在努力使用它。我不明白我们怎么能说F
inuserRepository
必须是一个 Monad,以便它可以在 monad 理解块中使用。假设我有一些这样定义的类:
编译器抱怨它不能user
在线绑定,repo.user
因为它需要Kind<ForTry, ...>
但是这里未知的repo.user
返回。Kind<F, ...>
如何正确实现抽象,Try
以便我可以使用Id
实例实现存储库以及如何在服务类中使用此类存储库?
kotlin - 如何在同步上下文中使用箭头 kt 中的 IO 组合
我有以下接口:
现在尝试使用它来组成这样的有效操作:
代码无法在第二次绑定上编译(调用userRepository.accessRights(r.id).bind()
sincebind
是挂起函数。我如何正确组合两个操作?我不明白为什么第一次绑定有效但第二次没有,我不想让我的函数暂停还是我必须这样做?
kotlin - 使用镜头更改数据类的多个属性
我正在 Kotlin 中尝试使用Lenses,我想知道是否有一种优雅的方法可以同时更改一个对象的多个属性。假设我的域看起来像这样:
多亏了@optics
注释,编辑单个字段很容易:
这些镜头单独工作时效果很好,但是当我想同时应用这三个变换时,应该使用什么正确的模式呢?我可以使用 avar
并且每次都覆盖calculation
,但这对我来说并不习惯。
kotlin - ArrowKT - @optics 注释不生成代码
您如何设置箭头依赖项以使@optics
注释实际工作?不会为带有注释的数据类生成伴随对象@optics
。
如果我没记错的话,这是一个注释处理器,所以它应该使用 导入kapt
,但是文档使用它作为compile
.
kotlin - ArrowKT - 镜头调用给出编译错误
我正在尝试遵循有关Arrow 的文档。Lens
但是,当我尝试编写镜头时
我收到以下错误:
我看到这Lens<S, T>
是 的类型别名PLens<S, S, T, T>
,那么为什么会出现这个编译错误?
Kotlin 版本 1.3.50
艾睿光学 0.10.0 版
kotlin - 如何在 kotlin 中为 Arrow 的 Option 编写自定义杰克逊反序列化器?
我需要将 json 中的可选值反序列化为 Kotlin 中具有Option
类型的数据类。例子:
我正在努力为这个用例编写正确版本的反序列化器。这是我尝试过的:
但这不起作用并引发错误:
无法构造实例
$Sample
(没有创建者,如默认构造,存在):无法从 [Source: (String)"{ "id" : "1", "content" : "部分内容" }"; 行:2,列:3] com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例$Sample
(不存在像默认构造一样的创建者):无法从 [Source: (String)"{ "id" : "1", "content" : "Some content “}”;line: 2, column: 3] at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1452) at com .fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1028) 在 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1297) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer .
如何让杰克逊使用Option
来自的类型arrow-kt
?
kotlin - 在 Kotlin 中使用 Klaxon for JSON 和 Arrow for Option?
科尔廷新手在这里。如果我有一个包含 (Kotlin) Borrowers and Books 的图书馆,并且Book
当它有 a 时被签出Borrower
(使用 Arrow 的Option
数据类型):
如何在小型库之间进行编码和解码:
它是 JSON 表示:
使用克拉克松?
一个Option
(或Either
?)通过 Klaxon 的表示让我失望。我相信 Scala 的 spray-json 可以处理这些数据类型。
谢谢你。
android - 如何在 Kotlin/Arrow.kt 中为 producer Channel 实现“铁路模式”
我正在我当前的 Android 应用程序中调查 Kotlin Coroutines & Channels。
我有以下代码来管理远程 Api 调用和控制 UI 副作用
上面的代码给了我想要的结果,但是我想将它重构为类似于函数式编程“铁路模式”的东西https://android.jlelse.eu/real-world-functional-programming-with-kotlin-arrow- b5a98e72f5e3
我的流程在哪里
这将在任何步骤失败或历史“已完成”时“短路”
是否有可能在 Kotlin 中实现这种调用方式?和/或 Kotlin & Arrow.kt?
kotlin - 如何使用 Kotlin 和 Arrow 执行程序
我正在尝试使用 Kotlin 和 Arrow 学习一些函数式编程,通过这种方式,我已经阅读了一些类似以下的博文:https ://jorgecastillo.dev/kotlin-fp-1-monad-stack ,其中很好,我已经理解了主要思想,但是在创建程序时,我不知道如何运行它。
让我更明确地说:
我有以下代码:
如您所见,它将一些结果累积到 IO monad 中。我应该使用unsafeRunSync()
from 箭头运行这个程序,但在 javadoc 上它说明如下:**NOTE** this function is intended for testing, it should never appear in your mainline production code!
. 我应该提到我知道unsafeRunAsync
,但就我而言,我想要同步。
谢谢!