我真的在努力使用箭头库的 Validated 类型。
我不明白的是:为什么没有flatMap
或flatten
在使用 Validated 时?
我来自“任何一个世界”,这根本不是问题。但是我需要组合多个错误,所以我的核心验证类型是ValidatedNel<Error, Data>
最后。
在我的代码示例中,我有一个生成 Either 的函数 - 我使用这些低级步骤来创建我需要的元素或错误。
但是要结合所有累积的错误进行正确的验证,我迟早需要ValidatedNel
类型。
fun readData(): Either<Error, DataA> = ...
fun DataA.validate(): ValidatedNel<Error, DataB> = ...
[...]
// here I need to fold to get my one Error to a Nel and to process the data to another type - this looks so ugly!
val validated = readData().fold( { it.invalidNel() }, DataA::validate)
相反,我想要的是:
fun readData(): ValidatedNel<Error, DataA> = ...
// ...
val validated = readData.flatMap(DataA::validate)
我只是不明白为什么验证类型不支持像 flatMap 这样的简单操作。
有人知道该怎么做吗?