我想在不释放资源的情况下在runResourceT内捕获异常,但函数catch在IO内运行计算.有没有办法在runResourceT中捕获异常,或者重构代码的推荐方法是什么?
谢谢您的帮助.
{-# LANGUAGE FlexibleContexts #-}
module Main where
import Control.Exception as EX
import Control.Monad.IO.Class
import Control.Monad.Trans.Resource
type Resource = String
allocResource :: IO Resource
allocResource = let r = "Resource"
in putStrLn (r ++ " opened.") >> return r
closeResource :: Resource -> IO ()
closeResource r = putStrLn $ r ++ " closed."
withResource :: ( MonadIO m
, MonadBaseControl IO m
, MonadThrow m
, MonadUnsafeIO m
) => …Run Code Online (Sandbox Code Playgroud) haskell ×1