首页 > 解决方案 > 为什么有一个用于 exceptT 的 MonadMask 实例?

问题描述

在上一个问题中,我问

为什么没有 ExceptT 的 MonadMask 实例?

并得到了许多令人信服的答案,包括图书馆作者,为什么不存在合法的例子。

截至 2018 年 2 月,异常库现在确实有一个用于exceptT 的 MonadMask实例

所以现在我要问完全相反的问题:为什么我上一个问题的答案不正确?

标签: haskellexception-handlingmonad-transformers

解决方案


exceptions库的文档在其文档中有答案:

这个方法是在这个库的 0.9.0 版本中添加的。以前,在这个模块中像bracketand之类的函数的实现仅finally基于maskanduninterruptibleMask函数,不允许某些类的转换器具有MonadMask实例(特别是多出口点转换器,例如ExceptT)。如果您是库作者,您现在需要提供此方法的实现...

(注意:generalBracket0.10 的类型已更改,请勿使用 0.9)。


推荐阅读