ClientM
也有一个MonadBaseControl IO ClientM
实例,用于处理这种情况。例如,我认为以下内容应该可以通过类型检查(并且可以与m ~ ClientM
一起使用)。finally' :: MonadBaseControl IO m => m a -> m b -> m a
finally' x y = control $ \runInIO -> catch (runInIO x) (runInIO y)
上面的代码不仅进行了类型检查,而且在lifted-base
中定义为finally
。
MonadBaseControl
实例时,我遇到了一个错误 - 我已经在这里发布了一个新的问题 here。 - Kiara Grouwstra