刚开始摸索单子(monad)。我认为在 Clojure 中,所以纯度对我来说并不是非常重要。
我有一系列可能会失败的业务操作(可组合转换)。这可以用 error-monad 很好地抽象出来。
部分业务操作涉及到数据库IO,为了速度我需要批量执行。每个批量操作都作用于一组独立的项目,因此一个失败不能使整个集合失败。
我是否应该将批量转换视为一个对象( map )上的一系列函数,这些函数在错误单子(monad)之类的内部完成,但作用于序列中的独立项目? seq-monad 在这里对我有帮助吗?我应该怎么想?还有其他想法吗?
我没有看到将它与 IO-monad 结合起来对 Clojure 中的数据库副作用有任何特别的好处,对此有何想法?
最佳答案
很难确切地说出您需要什么,因为您的业务案例似乎有点涉及,但我认为您可能会从使用 clojure.algo.monads 库中获得一些好处。
您可以在内部处理批处理的错误单子(monad)或可能单子(monad)上创建自己的变体。
关于error-handling - 使用单子(monad)批量进行失败的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951772/