【发布时间】:2016-07-02 11:16:22
【问题描述】:
Java 8 没有提供 Try monad。这对于函数式的异常处理很有用。
在 kotlin 中有现成的实现吗?还是我应该实施一个?
【问题讨论】:
-
你是在问别人是否需要这样的库?
标签: java functional-programming monads kotlin
Java 8 没有提供 Try monad。这对于函数式的异常处理很有用。
在 kotlin 中有现成的实现吗?还是我应该实施一个?
【问题讨论】:
标签: java functional-programming monads kotlin
从 kotlin 1.3 开始你可以使用runCatching
【讨论】:
Throwable 而不是Exception,因此它也捕获java.lang.Error` 的任何子类。在我看来这并不理想,因为它可以隐藏错误的实际来源,并且在其中之一之后 JVM 将无法使用。
不幸的是,Kotlin 标准库中没有 Try monad。我只是在学习 FP,但我认为 sealed class 是你自己实现 Try monad 所需要的。还有一些库:Result 和 funKTionale。
更新。 2018 年 2 月
现在 funKTionale 和 Kategory 合并到 arrow 库中,其中包含 Try monad。
【讨论】: