您是否知道任何 Haskell 库
- 为记录验证和(!)提供了一些简化
- 与Aeson 合作?
我知道我可以编写一些构造函数,但我想删除样板而不重新发明轮子。
我正在寻找的是以下内容:
我想为每个字段定义“合同”。例如:
data Person = Person {
age :: Integer
,email :: Text
,projects :: [Project]}
现在,我想保证在我将 JSON 解析到记录中之后,以下内容成立:
- [0,Inf) 中的年龄
- 电子邮件匹配“^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[AZ]{2,6}$”
- 项目至少包含 2 个项目
如果我尝试创建年龄 < 0 的记录,我将收到一条错误消息,例如“age=0 no in [0,inf)”。我认为应该可以通过模板 Haskell 派生这样的东西。
此外,我想将其集成到解析器阶段。因此,我不想收到一条错误消息,例如“当预期是一个 Integral,而是遇到了 String”,我想收到一条错误消息,
- 显示错误的位置(不确定 attoparsec 是否可行)
- 描述错误。