如何使用haskell控件.返回IO的异常句柄(可能是)



我正在阅读现实世界haskell第9章。有一个maybeIO函数将IO函数结果封装到Maybe:中

    maybeIO :: IO a -> IO (Maybe a)
    maybeIO act = handle(_ -> return Nothing) ( liftM Just act)

但是这个代码在GHC7或+中不起作用,我想知道如何编辑这个代码,这样它就可以在GHC77中工作,我试过

    import Control.Exception (bracket, handle, SomeException(..))
    maybeIO :: IO a -> IO (Maybe a)
    maybeIO act = handle((SomeException e) -> return Nothing) ( liftM Just act)

但我得到了一个解析错误:顶级的裸表达式

我没有得到任何这样的解析错误-我得到的唯一错误是缺少函数:

so3.hs:3:62: Not in scope: `liftM'

您需要import Control.Monad,这是定义liftM函数的地方。或者使用fmap而不是liftM

您的解析错误可能是由于不正确的缩进,但复制并粘贴您的代码对我来说没有这样的问题。

相关内容

  • 没有找到相关文章

最新更新