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 (将#修改为@)