【发布时间】:2014-02-27 19:46:38
【问题描述】:
我正在寻找一种在 Clojure 中创建可组合验证和转换管道的智能方法。目的是能够使用可组合的步骤对消息进行简单的翻译和验证。
主要要求:
- 可以按功能组合,即管道是纯函数
- 可应用于常规 Clojure 数据类型(映射、向量、列表及其嵌套组合)
- 可以执行转换,例如重命名地图中的键
- 可以执行任意验证(例如,对消息的一部分应用架构验证)
- 可以在检测到错误时优雅地退出,并返回有意义的错误消息(不只是抛出异常!)
我想我可以写所有这些,但今天不想重新发明轮子:-)
是否有人知道可以做到这一点的工具,或者知道如何以一种聪明而通用的方式构建一个工具?
【问题讨论】:
-
这听起来有点像对 monad 的描述,但我不太了解这些内容,不知道是否真的如此。
-
是的,同意。这听起来像是 Either monad 中的计算。
标签: validation clojure message pipeline