微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Data.Either.Validation monoid实现,可以+错误=可以吗?

如何解决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 举报,一经查实,本站将立刻删除。