gpt4 book ai didi

haskell - 将 monad 转换为 IO

转载 作者:行者123 更新时间:2023-12-03 13:16:39 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Lifting a higher order function in Haskell

(1 个回答)


3年前关闭。




我想用 finally , 签名IO a -> IO b -> IO a .

但是,我想使用的操作基于与 IO 不同的 monad (即 Servant ClientM )。

我知道 liftIO ,但这似乎适得其反 -- IO a -> m a .

如何将我的 monad 转换为 IO,或者提升 finally比如对我的 monad 进行操作?

最佳答案

请注意 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 as finally 中定义.

关于haskell - 将 monad 转换为 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com