4 ms·
> Imagine every IO action having its own error type in a sum type. How do you compose them? Perhaps by converting each error type to a common sum type. Somethi
by danidiaz 12y ago
> Imagine every IO action having its own error type in a sum type. How do you compose them?
Perhaps by converting each error type to a common sum type. Something like "Either (Either error1 error2) result". Typeclasses like "Bifunctor" are quite useful for massaging the errors around:
http://hackage.haskell.org/package/bifunctors-4.2/docs/Data-Bifunctor.html http://hackage.haskell.org/package/bifunctors-4.2/docs/Data-...
Asynchronous exceptions do pose a problem for this approach though, as they can pop up in any function at any time. And perhaps a fully sum-type-based approach would clutter function signatures too much anyway.