Chr*_*tin 6 haskell exception-handling monad-transformers
在上一个问题中,我问道
并获得了一些令人信服的答案,包括来自图书馆作者,为什么不存在合法的实例.
截至2月2018年,在例外库确实现在有一个实例MonadMask的ExceptT.
所以现在我问的是完全相反的问题:为什么上一个问题的答案不正确?
该exceptions库的文档在其文档中有答案:
此方法是在该库的 0.9.0 版本中添加的。以前,此模块中的
bracket和 等函数的实现仅finally基于mask和uninterruptibleMask函数,不允许某些类变压器拥有MonadMask实例(特别是像 这样的多出口点变压器ExceptT)。如果您是库作者,您现在需要提供此方法的实现......
(注:0.10中改变了类型generalBracket,不要使用0.9)。