我的程序中有一个 MonadIO 实例,我想Control.Exception
从该 MonadIO 中抛出/捕获异常(来自基本包中的模块)。
快速的谷歌搜索返回了很多讨论(约会 2003)和复杂的解决方案(如实现 MonadControlIO、MonadBase 等实例),我想知道是否有一个简单/接受/广泛使用的解决方案,
如果没有,这个问题的一个很好的解决方案是什么?据我所知,Hackage 中有几个包解决了这个问题,我应该使用哪一个?
(顺便说一句,关于我们为什么没有catch
in的推荐读物MonadIO
也将不胜感激)
谢谢,
编辑:所以托马斯的回答很好,但我也想知道还有什么其他选择,我使用IO
异常而不是ErrorT
性能的主要目的,并且我在(443389 滴答声与 318552 滴答声)之后获得了一些性能Control.Monad.IO.Control
,有没有更好的选择Control.Monad.IO.Control
?