【发布时间】:2019-04-01 18:54:30
【问题描述】:
我正在使用函数库arrow-kt(以前称为kategory)进行编程。我正在使用 Either monad 来聚合 api 调用的错误或成功信息。我让自己进入了一个状态(这首先不应该发生),其中我有一个嵌套 Either monads。我正在尝试使结构变平以获取内部单子。文档非常有限,我找不到方法。
这是我想要展平的嵌套 Either monad 的示例:
Either.right(Either.right(Either.left("error")))
【问题讨论】:
-
快速响应:要么有一个 flatMap 方法,但你永远不应该创建嵌套。使用 fold、flatMap、flatMapLeft 来确保你最终只达到一层深度。如果您有代码示例,我可能会提供更多帮助。
-
flatMap正在丢弃left值。我想保留它们(类似于fold的集合)。关于代码,我将不得不粘贴相当数量的代码......我会尽快完成。 -
是不是你应该得到
Either.left()作为返回值,什么都不应该计算,因为我认为你有一个错误
标签: functional-programming kotlin