【发布时间】:2012-08-10 14:39:39
【问题描述】:
我开始使用 Scalaz 7 验证和/或析取来处理可能失败的操作列表并管理其结果。
这种用例有两个有据可查的案例:
1/ 您想检查某事的条件列表,并累积每个错误(如果有)。在这里,您总是走到列表的末尾,如果出现任何错误,您将作为全局结果失败。 这是一个应用函子在起作用。
2/ 你想执行几个可能失败的步骤,并在第一个失败时停止。 在这里,我们有一个在 Scala 中很好理解的 monad。
所以,我还有两个相同的用例,但在任何先例中似乎都不太合适: 我想处理一个可能失败的步骤列表,并累积错误和成功结果(例如:它是对文件的修改列表,可能会发生错误,因为那是外部世界,成功是我想保留以备后用的补丁)。
这两个用例的区别仅在于我想提前停止(在第一个错误时)或转到列表的末尾。
好的,那么正确的做法是什么?
(写这个问题让我认为这只是一个简单的 foldLeft,是吗?我会让这个问题在这里验证,如果其他人想知道)
【问题讨论】:
标签: scala monads fold scalaz applicative