error-handling - 使用单子(monad)批量进行失败的转换?

标签 error-handling clojure monads

刚开始摸索单子(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/

相关文章:

PHP catch 无法打开流 : HTTP request failed! HTTP/1.1 401 Unauthorized

javascript - 为什么 try..catch..finally block 的 finally 节在 catch 之前运行?

clojure - 在 Clojure 中计算 GS1 校验位的更惯用的方法

java - Clojure:输入流比阅读器慢

php - php mailer获取SMTP connect()失败突然出现错误,请正常工作

node.js - 由于releaseStage/notifyReleaseStages配置而未发送报告

clojure - 在 webnoir 中以编程方式获取主机地址

haskell - 跳过 monad 中剩余的操作 - 类似 return

scala - 采用单位法

haskell - 如何在绑定(bind)操作中使用非一元函数