如何解决Data.Either.Validation monoid实现,可以+错误=可以吗?
我看着这个:
http://hackage.haskell.org/package/either-5.0.1.1/docs/Data-Either-Validation.html
monoid的实现:
print(df_out)
country size a b c d
0 Italy 1 0.5 0.3 0.1 0.7
1 UK 2 0.3 0.5 0.7 0.3
2 UK 2 0.3 0.5 0.7 0.3
3 USA 2 0.7 0.1 0.3 0.1
4 USA 2 0.7 0.1 0.3 0.1
5 Uk 1 0.1 0.7 0.5 0.5 <- caused by typo in given data
我希望必须将有错误的成功合并为错误... 而且不明白为什么以这种方式实施 成功与错误合并成成功?
因此,如果我有很多验证结果,但其中一个失败了,我希望减少所有失败并合并所有错误。
但是:
instance Monoid e => Monoid (Validation e a) where
mempty = Failure mempty
Failure e1 `mappend` Failure e2 = Failure (e1 `mappend` e2)
Failure _ `mappend` Success a2 = Success a2
Success a1 `mappend` Failure _ = Success a1
Success a1 `mappend` Success _ = Success a1
为什么?
请记住,如果我有几个验证结果并且其中一个通过了,那么对于这种情况,总验证还可以吗?例如,如果我确认联系人是电子邮件,Skype或电话,其中之一有效,那可以吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。