免责声明:我对Haskell还是陌生的。
我开发了一个CLI应用程序,该应用程序使用cassava以严格且定义明确的布局加载tsv文件。对于符合预期结构的文件,我的代码可以正常工作。如果输入文件有问题(例如Double字段中的String),则第一个错误的加载过程将失败,并生成一条有用的错误消息。
此行为很好,但不是非常用户友好,因为它使修复损坏的文件变得非常乏味。理想情况下,不仅会看到数据结构问题的第一个实例,而且还会看到更多。我寻求的行为类似于文件验证器的行为。
我仔细阅读了木薯文档,确实提到了处理不良数据there。不幸的是,建议的解决方案只是引入默认值。
newtype DefaultToZero = DefaultToZero Int
instance FromField DefaultToZero where
parseField s = case runParser (parseField s) of
Left err -> pure $ DefaultToZero 0
Right n -> pure $ DefaultToZero n
Google搜索使我想到了一个非常有趣的文章,该文章使用Validation应用程序来解决与我的问题非常相似的问题:https://ro-che.info/articles/2015-05-02-smarter-validation
您能给我一些建议是用木薯实现有用的文件验证反馈的最直接的方法是什么?也许这根本不可能,我必须返回DIY阅读解决方案?