【发布时间】:2012-01-09 09:19:28
【问题描述】:
我正在努力寻找最好的方法来报告一组应该很好地组合的函数中的错误,在我正在处理的库中。
具体来说,我的函数如下所示:
foo, bar, baz :: a -> Maybe a
其中foo 只能以一种方式失败(非常适合Maybe),但bar 和baz 可能以两种不同的方式失败(非常适合Either BarErrors 和Either BazErrors) .
一种解决方案是创建:
data AllTheErrors = TheFooError
| BarOutOfBeer
| BarBurnedDown
| ...
并让所有函数返回Either AllTheErrors,它表达了这些函数的组合序列可能引发的错误范围,代价是表达每个个别功能。
有什么方法可以同时获得吗?也许除了一元组合之外的东西?还是与类型族(挥手)...?
【问题讨论】:
标签: haskell error-handling composition