【发布时间】:2010-04-06 23:44:03
【问题描述】:
我想将函数 f 应用于值列表,但是函数 f 可能会随机失败(它实际上是在调用云中的服务)。
我想我想使用map 之类的东西,但我想将该函数应用于列表中的所有元素,然后我想知道哪些失败了,哪些成功了。
目前我正在用错误对包装函数 f 的响应对象,之后我可以有效地 unzip
即像
g : (a->b) -> a -> [ b, errorBoolean]
f : a-> b
然后运行代码...map g (xs)
有没有更好的方法来做到这一点?另一种替代方法是遍历数组中的值,然后返回一对数组,一个列出成功的值,一个列出失败的值。对我来说,这似乎应该是相当普遍的事情。或者,我可以返回一些特殊值。处理这个问题的最佳做法是什么?
【问题讨论】:
-
仅供参考:Haskell 中的列表必须是同质的(即只能包含一种类型的东西)。在您的情况下,您需要返回一个元组
(b, Bool)。当然正确的方法是使用 Maybe 或 Either。