问题标签 [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 - 对于 kotlin 和 arrow-kt 库的理解
我使用 arrow-kt 库,我正在尝试使用Either
并IO
在同一库中进行理解。
假设我有下一段代码:
现在,我想使用绑定ans
:
是否有可能在第一段代码的范围内做到这一点?
目前我正在尝试Either
在 IO 绑定范围内嵌套一个绑定,但我不确定这是一个好习惯:
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 中使用它。
kotlin - 有没有优雅的方法可以在 kotlin 和箭头中将 List 变成 NonEmptyList?
根据箭头文件,它似乎可以通过Semigroup
or来完成Monad binding
。但是,没有代码可以替换List
为NonEmptyList
.
有没有更好的方法来替换List
而不NonEmptyList
使用subList
?
junit - 如何以功能样式从 Arrow 测试 Either
我想使用 Either 测试获得的结果。假设我有一个没有 Either 的简单示例
现在我已经包装了结果:
我想它看起来有点难看,因为如果我们得到了最后的断言,Either.Left
而不是Either.Right
如何以函数式正确测试结果,则不会执行最后一个断言?
kotlin - kotlin 表达式自动转换时
我希望以下 kotlin 代码能够正常工作:
我将箭头库用于 Try 和 Option monad。
不幸的是,我只能访问第一个条件“is Success”的值,而不能访问第二个条件“is Some”的值。所以,我只能做“result.value”,然后我得到一个字符串选项。
我错过了什么吗?这将为我节省很多内部“.map”和“.fold”调用。
更新:
我需要先投射它,这很难看:
kotlin - 来自 Arrow 的 filterOrElse 和 filterOrOther 有什么区别?
我找不到filterOrElse和filterOrOther之间的区别
的签名
filterOrElse
是
并且filterOrOther
是
我看到的不同之处在于它filterOrOther
有一个lambda参数B
。default
默认值: ( B ) -> A 与默认值: () -> A
但我认为有两个不同的功能还有另一个原因。是什么原因?它们之间有什么区别?
kotlin - 一起使用 arrow-kt Either、Option 和 RxJava 的困难
我很难找到一种使用 RxJava 以及箭头 ktEither
和Option
类型进行协调的好方法。我有两种方法都返回Single<Either<ApiError, Option>
目标是将loadBar(Qux)
RxJava中的结果Single
作为 type返回Either<ApiError, Option<Bar>>
。
复杂性来自这样一个事实,即从返回的数据中检索到qux
所需的参数(是类型的属性)。loadBar()
Single
loadFoo()
Qux
Foo
Option<Qux>
期望的结果:
- 发生的任何s
ApiError
都会传递给Single
Either.Left
- 如果两者都
loadFoo()
返回loadBar()
,Some
则该值应以组合形式Single
返回Either.Right
- 如果 要么 要么
loadFoo()
返回loadBar()
,None
预期的结果是Either.Right(None)
我尝试了几件事。第一个示例有效,但是由于一堆嵌套折叠以及 RxJava 和Either/Option
运算符的混合,生成的代码难以阅读。
我尝试的第二件事是使用箭头的rxjava observable comprehensions。但无法完全弄清楚如何让这个最终返回Single<Either<ApiError, Option>
。
任何有关如何解决此问题或重组数据类型以使其更容易的帮助/建议将不胜感激!对于许多函数式编程概念来说仍然很新。
kotlin - Kotlin 和 Arrow.io:使用 IO.bracketCase 进行交易
我目前正在 Kotlin 中使用 Arrow.io,我很想在工作项目中使用该库(与 Spring Boot 一起)。我不太清楚如何正确解决的一个问题是事务管理。IO<A>.bracketCase(...)
在我看来,这是完成这项工作的正确工具。这是我目前正在研究的方法:
可悲的是,它并没有像我期望的那样工作:当在执行期间抛出异常时action
,我希望回滚。但事实并非如此(例如,以下测试失败):
我现在经常玩这个,无论我如何安排我的类型以及我将action
问题放在哪里 - 我永远不会bracketCase
回滚我的交易。我究竟做错了什么?有没有更好的方法来做到这一点?如果可能的话,我更喜欢不使用类型安全的方式unsafeRun
。
kotlin - 如何类型安全将 Either 的集合减少到仅 Right
也许是一个愚蠢的问题,但我就是不明白。
我有一个Set<Either<Failure, Success>>
并且想Set<Success>
用 Arrow-kt 输出一个。