关于 liftIO ?

发布于 2022-08-09 12:53:21 字数 203 浏览 8 评论 7

catchIO :: MonadIO m => IO () -> m ()
catchIO f = liftIO (f `catch` e -> hPrint stderr e >> hFlush stderr)

如果f发生例外, 则将例外输出到stderr 然后刷新stderr !   但liftIO是什么意思呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

む无字情书 2022-08-22 11:56:17

原帖由 sw2wolf 于 2009-4-30 14:52 发表
Prelude> import Control.Monad.State
Prelude Control.Monad.State> :i liftIO
class (Monad m) => MonadIO m where liftIO :: IO a -> m a

将IO a提升为Monad a?   什么用啊?

为了类型匹配呗。

遇见了你 2022-08-22 11:52:56

原帖由 flw 于 2009-4-30 16:48 发表

想学就好好学,不好好学就别追究太深。
Haskell 语句不是 Shell 命令,三言两语讲不清楚。

如果自己清楚, 也应该能讲清楚吧?   我还是查查资料吧

櫻之舞 2022-08-22 11:21:47

原帖由 sw2wolf 于 2009-4-30 16:31 发表

我是新手, 对monad的确不了解, 主要是要用xmonad做桌面, 才想学习下haskell

IO a 不是个MONAD吗? 还需要lift ?

想学就好好学,不好好学就别追究太深。
Haskell 语句不是 Shell 命令,三言两语讲不清楚。

一身软味 2022-08-22 09:08:09

原帖由 flw 于 2009-4-30 15:10 发表
你如果连这个问题都要问的话,
说明你需要先看一些基本的东西了解一下 Haskell 的类型系统,Monad 尤其是高级的 Monad 暂时先不求甚解就行了。
看看 YAHT 吧,也许会对你有帮助。

我是新手, 对monad的确不了解, 主要是要用xmonad做桌面, 才想学习下haskell

IO a 不是个MONAD吗? 还需要lift ?

我只土不豪 2022-08-22 03:58:08

你如果连这个问题都要问的话,
说明你需要先看一些基本的东西了解一下 Haskell 的类型系统,Monad 尤其是高级的 Monad 暂时先不求甚解就行了。
看看 YAHT 吧,也许会对你有帮助。

梦幻的心爱 2022-08-22 03:14:16

Prelude> import Control.Monad.State
Prelude Control.Monad.State> :i liftIO
class (Monad m) => MonadIO m where liftIO :: IO a -> m a

将IO a提升为Monad a?   什么用啊?

夏了南城 2022-08-20 06:13:47

看它的定义,一般 lift 都是做类型提升的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文