问题标签 [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 回答
1510 浏览

kotlin - 对于 kotlin 和 arrow-kt 库的理解

我使用 arrow-kt 库,我正在尝试使用EitherIO在同一库中进行理解。

假设我有下一段代码:

现在,我想使用绑定ans

是否有可能在第一段代码的范围内做到这一点?

目前我正在尝试Either在 IO 绑定范围内嵌套一个绑定,但我不确定这是一个好习惯:

0 投票
1 回答
186 浏览

groovy - 如何在 Groovy 代码中使用 Arrow-kt 的 Some()?

我正在尝试使用 Groovy 中的 Spock 测试具有 Arrow-kt 类型的 Kotlin 代码。但是,我无法使用 Arrow-kt 的附加功能,例如Some. 例如,我有一个测试如下:

虽然第一个数据行成功没有问题,但第二个数据行失败并出现以下错误:

groovy.lang.MissingMethodException: No signature of method: package.name.EventSpec.Some() is applicable for argument types: (package.name.ActionInternal) values: [ActionInternal(dropletIp=null)] Possible solutions: Mock(), Spy(), Stub(), dump(), Mock(groovy.lang.Closure), Mock(java.lang.Class)

我也试过.some()了,但没有用。显然,Groovy 无法访问 Kotlin 扩展,而Some只是一个数据类[ 1 ],所以我不确定为什么我不能在 Groovy 中使用它。

0 投票
1 回答
637 浏览

kotlin - 有没有优雅的方法可以在 kotlin 和箭头中将 List 变成 NonEmptyList?

根据箭头文件,它似乎可以通过Semigroupor来完成Monad binding。但是,没有代码可以替换ListNonEmptyList.

有没有更好的方法来替换List而不NonEmptyList使用subList

0 投票
3 回答
1725 浏览

junit - 如何以功能样式从 Arrow 测试 Either

我想使用 Either 测试获得的结果。假设我有一个没有 Either 的简单示例

现在我已经包装了结果:

我想它看起来有点难看,因为如果我们得到了最后的断言,Either.Left而不是Either.Right 如何以函数式正确测试结果,则不会执行最后一个断言?

0 投票
2 回答
327 浏览

kotlin - kotlin 表达式自动转换时

我希望以下 kotlin 代码能够正常工作:

我将箭头库用于 Try 和 Option monad。

不幸的是,我只能访问第一个条件“is Success”的值,而不能访问第二个条件“is Some”的值。所以,我只能做“result.value”,然后我得到一个字符串选项。

我错过了什么吗?这将为我节省很多内部“.map”和“.fold”调用。

更新:

我需要先投射它,这很难看:

0 投票
1 回答
284 浏览

kotlin - 来自 Arrow 的 filterOrElse 和 filterOrOther 有什么区别?

我找不到filterOrElsefilterOrOther之间的区别

的签名 filterOrElse

并且filterOrOther

我看到的不同之处在于它filterOrOther有一个lambda参数Bdefault

默认值: ( B ) -> A 与默认值: () -> A

但我认为有两个不同的功能还有另一个原因。是什么原因?它们之间有什么区别?

0 投票
1 回答
705 浏览

kotlin - 一起使用 arrow-kt Either、Option 和 RxJava 的困难

我很难找到一种使用 RxJava 以及箭头 ktEitherOption类型进行协调的好方法。我有两种方法都返回Single<Either<ApiError, Option>

目标是将loadBar(Qux)RxJava中的结果Single作为 type返回Either<ApiError, Option<Bar>>

复杂性来自这样一个事实,即从返回的数据中检索到qux所需的参数(是类型的属性)。loadBar()SingleloadFoo()QuxFooOption<Qux>


期望的结果:

  • 发生的任何sApiError都会传递给SingleEither.Left
  • 如果两者都loadFoo()返回loadBar()Some则该值应以组合形式Single返回Either.Right
  • 如果 要么 要么loadFoo()返回loadBar()None预期的结果是Either.Right(None)

我尝试了几件事。第一个示例有效,但是由于一堆嵌套折叠以及 RxJava 和Either/Option运算符的混合,生成的代码难以阅读。


我尝试的第二件事是使用箭头的rxjava observable comprehensions。但无法完全弄清楚如何让这个最终返回Single<Either<ApiError, Option>


任何有关如何解决此问题或重组数据类型以使其更容易的帮助/建议将不胜感激!对于许多函数式编程概念来说仍然很新。

0 投票
1 回答
414 浏览

kotlin - Kotlin 和 Arrow.io:使用 IO.bracketCase 进行交易

我目前正在 Kotlin 中使用 Arrow.io,我很想在工作项目中使用该库(与 Spring Boot 一起)。我不太清楚如何正确解决的一个问题是事务管理。IO<A>.bracketCase(...)在我看来,这是完成这项工作的正确工具。这是我目前正在研究的方法:

可悲的是,它并没有像我期望的那样工作:当在执行期间抛出异常时action,我希望回滚。但事实并非如此(例如,以下测试失败):

我现在经常玩这个,无论我如何安排我的类型以及我将action问题放在哪里 - 我永远不会bracketCase回滚我的交易。我究竟做错了什么?有没有更好的方法来做到这一点?如果可能的话,我更喜欢不使用类型安全的方式unsafeRun

0 投票
1 回答
450 浏览

kotlin - 如何类型安全将 Either 的集合减少到仅 Right

也许是一个愚蠢的问题,但我就是不明白。

我有一个Set<Either<Failure, Success>>并且想Set<Success>用 Arrow-kt 输出一个。

0 投票
1 回答
360 浏览

functional-programming - F# 中是否有类似于 scalaz、cats 和 arrow (Kotlin) 的库?

F# 中使用“高级”功能模式的推荐方法是什么?对于 Scala 有scalazcats,甚至对于 Kotlin 也有Arrow,尽管我还没有找到任何与 F# 类似的东西。