问题标签 [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.

0 投票
1 回答
597 浏览

validation - Kotlin 箭头 kt 在 Validated 和 ValidatedNel 上缺少 flatMap

我真的在努力使用箭头库的 Validated 类型。

我不明白的是:为什么没有flatMapflatten在使用 Validated 时?

我来自“任何一个世界”,这根本不是问题。但是我需要组合多个错误,所以我的核心验证类型是ValidatedNel<Error, Data>最后。

在我的代码示例中,我有一个生成 Either 的函数 - 我使用这些低级步骤来创建我需要的元素或错误。

但是要结合所有累积的错误进行正确的验证,我迟早需要ValidatedNel类型。

相反,我想要的是:

我只是不明白为什么验证类型不支持像 flatMap 这样的简单操作。

有人知道该怎么做吗?

0 投票
1 回答
255 浏览

kotlin - 如何从 Try in arrow-kt 中抽象出来

我在我的 Kotlin 后端项目中使用 Arrow。我有这样的存储库:

现在我想更进一步,从具体Try类型中抽象出来,Kind<F, Option<User>>而不是返回。我能够用这段代码做到这一点:

但现在我正在努力使用它。我不明白我们怎么能说FinuserRepository必须是一个 Monad,以便它可以在 monad 理解块中使用。假设我有一些这样定义的类:

编译器抱怨它不能user在线绑定,repo.user因为它需要Kind<ForTry, ...>但是这里未知的repo.user返回。Kind<F, ...>如何正确实现抽象,Try以便我可以使用Id实例实现存储库以及如何在服务类中使用此类存储库?

0 投票
2 回答
248 浏览

kotlin - 如何在同步上下文中使用箭头 kt 中的 IO 组合

我有以下接口:

现在尝试使用它来组成这样的有效操作:

代码无法在第二次绑定上编译(调用userRepository.accessRights(r.id).bind()sincebind是挂起函数。我如何正确组合两个操作?我不明白为什么第一次绑定有效但第二次没有,我不想让我的函数暂停还是我必须这样做?

0 投票
1 回答
372 浏览

kotlin - 使用镜头更改数据类的多个属性

我正在 Kotlin 中尝试使用Lenses,我想知道是否有一种优雅的方法可以同时更改一个对象的多个属性。假设我的域看起来像这样:

多亏了@optics注释,编辑单个字段很容易:

这些镜头单独工作时效果很好,但是当我想同时应用这三个变换时,应该使用什么正确的模式呢?我可以使用 avar并且每次都覆盖calculation,但这对我来说并不习惯。

0 投票
2 回答
438 浏览

kotlin - ArrowKT - @optics 注释不生成代码

您如何设置箭头依赖项以使@optics注释实际工作?不会为带有注释的数据类生成伴随对象@optics

如果我没记错的话,这是一个注释处理器,所以它应该使用 导入kapt,但是文档使用它作为compile.

0 投票
1 回答
52 浏览

kotlin - ArrowKT - 镜头调用给出编译错误

我正在尝试遵循有关Arrow 的文档。Lens但是,当我尝试编写镜头时

我收到以下错误:

我看到这Lens<S, T>是 的类型别名PLens<S, S, T, T>,那么为什么会出现这个编译错误?

Kotlin 版本 1.3.50

艾睿光学 0.10.0 版

0 投票
2 回答
2373 浏览

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

0 投票
0 回答
89 浏览

kotlin - 在 Kotlin 中使用 Klaxon for JSON 和 Arrow for Option?

科尔廷新手在这里。如果我有一个包含 (Kotlin) Borrowers and Books 的图书馆,并且Book当它有 a 时被签出Borrower(使用 Arrow 的Option数据类型):

如何在小型库之间进行编码和解码:

它是 JSON 表示:

使用克拉克松?

一个Option(或Either?)通过 Klaxon 的表示让我失望。我相信 Scala 的 spray-json 可以处理这些数据类型。

谢谢你。

0 投票
1 回答
680 浏览

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?

0 投票
1 回答
254 浏览

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,但就我而言,我想要同步。

谢谢!