刚刚开始摸索monads。我认为在Clojure中,纯度对我来说并不是特别重要。
我有一系列可能失败的业务操作(可组合转换)。这可以用error-monad很好地抽象出来。
有些业务操作涉及数据库IO,为了提高速度,我需要批量执行这些操作。每个批量操作都作用于一组独立的项目,因此一次失败一定不能使整个集合失败。
我应该把我的批量转换看作是一个对象(map)上的一系列函数,这些函数在类似error monad的东西中完成,但在seq中作用于独立的项吗?seq-monad对我有帮助吗?我该如何思考这个问题呢?还有其他想法吗?
对于我在Clojure中的数据库副作用,我没有看到将其与IO-monad结合使用有什么特别的好处,你对此有何看法?
发布于 2012-04-22 06:30:48
很难说您到底需要什么,因为您的业务案例似乎有点复杂,但我认为您可能会从使用clojure.algo.monads库中获得一些好处。
您可以在内部处理批处理的error-monad或可能-monad上创建自己的变体。
https://stackoverflow.com/questions/9951772
复制相似问题