Validation Clojure中具有错误处理的管道

Validation Clojure中具有错误处理的管道,validation,clojure,message,pipeline,Validation,Clojure,Message,Pipeline,我正在寻找一种在Clojure中创建可组合验证和转换管道的智能方法。目的是能够使用可组合的步骤对消息进行简单的翻译和验证 主要要求: 可以在功能上组合,即管道是纯功能 可应用于常规Clojure数据类型(映射、向量、列表及其嵌套组合) 可以执行转换,例如重命名地图中的关键点 可以执行任意验证(例如,对消息的一部分应用架构验证) 当检测到错误时,可以优雅地退出,并返回有意义的错误消息(不仅仅是抛出异常!) 我想我可以写下所有这些,但今天我并不特别想重新发明轮子:-) 任何人知道一个工具可以做到

我正在寻找一种在Clojure中创建可组合验证和转换管道的智能方法。目的是能够使用可组合的步骤对消息进行简单的翻译和验证

主要要求:

  • 可以在功能上组合,即管道是纯功能
  • 可应用于常规Clojure数据类型(映射、向量、列表及其嵌套组合)
  • 可以执行转换,例如重命名地图中的关键点
  • 可以执行任意验证(例如,对消息的一部分应用架构验证)
  • 当检测到错误时,可以优雅地退出,并返回有意义的错误消息(不仅仅是抛出异常!)
我想我可以写下所有这些,但今天我并不特别想重新发明轮子:-)


任何人知道一个工具可以做到这一点,或者对如何以一种聪明和通用的方式构建一个工具有好的想法吗?

你可以看看Zach Tellman的库。您可以创建包含错误处理程序的函数作为其他有用的功能。

您可能会发现(请参阅),我一直致力于优雅的错误处理和控制流的库,对于问题中描述的某些内容非常有用。

这听起来像是对monad的描述,但我不太了解这些,不知道事实是否如此。是的,我同意。这听起来像是一个单子中的计算。