Haskell 变量不在范围内:catch
我有这个函数用这个代码打开一个文件,但它正在返回Haskell 变量不在范围内:catch,haskell,Haskell,我有这个函数用这个代码打开一个文件,但它正在返回 teste.hs: 228: 5: error: Variable not in scope: catch :: IO Handle -> (t0 -> IO Handle) -> IO Handle 我的代码: opensArchive :: String -> IOMode -> IO Handle opensFile file mode = catch (openFile mode
teste.hs: 228: 5: error:
Variable not in scope:
catch :: IO Handle -> (t0 -> IO Handle) -> IO Handle
我的代码:
opensArchive :: String -> IOMode -> IO Handle
opensFile file mode =
catch (openFile mode file)
(\ _ -> do {
putStrLn ("Unable to open" ++ file);
putStrLn "It will be opened with a default name: data.txt and cleared";
pt_arq <- opensFile "data.txt" WriteMode;
closeArchive pt_arq;
opensFile "data.txt" ReadMode
}
)
closeArchive :: Handle -> IO ()
closeFile handle_arq = hClose handle_arq
opensArchive::String->IOMode->IO句柄
opensFile文件模式=
catch(openFile模式文件)
(\ \ \->do{
putStrLn(“无法打开”++文件);
putStrLn“将以默认名称打开:data.txt并清除”;
pt_arq IO()
closeFile handle\u arq=hClose handle\u arq
您可能需要查看函数
catch
的规范
浏览至。然后在网页左上角的搜索字段中输入“catch”
然后单击顶部的解决方案。这将使您进入for函数catch
在该页面的最顶端,您将看到它是关于模块控制的。异常
。您导入了它吗
在ghci下进行测试:
$ ghci
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
...
λ>
λ> :type catch
<interactive>:1:1: error: Variable not in scope: catch
λ>
λ> import Control.Exception
λ>
λ> :type catch
catch :: Exception e => IO a -> (e -> IO a) -> IO a
λ>
λ>
$ghci
GHCi,8.6.5版:http://www.haskell.org/ghc/ :?寻求帮助
...
λ>
λ> :类型捕捉
:1:1:错误:变量不在范围内:catch
λ>
λ> 导入控制。异常
λ>
λ> :类型捕捉
catch::Exception e=>ioa->(e->ioa)->ioa
λ>
λ>
瞧!您可能想在问题的标题中提到,问题在于Haskell未能找到函数
catch
。