我有以下的程序,它抛出一个运行时异常:如何在Haskell中获得openFile的路径?
import System.IO
main :: IO()
main = do
handle <- openFile "palindrome.txt" ReadMode
input <- hGetContents handle
hClose handle
它的类型检查,但每当我尝试运行main
,我会得到一个错误:
上午什么我做错了?
我有以下的程序,它抛出一个运行时异常:如何在Haskell中获得openFile的路径?
import System.IO
main :: IO()
main = do
handle <- openFile "palindrome.txt" ReadMode
input <- hGetContents handle
hClose handle
它的类型检查,但每当我尝试运行main
,我会得到一个错误:
上午什么我做错了?
您当前的程序使用相对路径。因此,该文件必须位于您启动GHCi的同一目录中。鉴于你的工作空间是$HOME/Desktop/Haskell
,它可能只检查$HOME/Desktop/Haskell/palindrome.txt
。如果要在$ HOME/Desktop/Haskell/u03/3-1 /`中使用palindrome.txt
,则需要在代码中使用绝对路径,或者在该目录中运行GHCi。
注意,您可以用:cd
改变当前目录中GHCI,所以在GHCI下面的命令应该工作:
Prelude> :cd /path/to/your/directory
Prelude> :l palindrom-a.hs
*Main> :main
一点点的更多信息。你在哪里执行你的程序,'file.txt'在哪里? – Zeta
感谢您的回复。我运行一个shell并在Mac上打开ghci模式。 file.txt与程序本身在同一个文件夹中 – Mauritius
[编辑]你的问题附加信息。显示您的整个GHCi会话以及工作目录的相关内容,例如'ls -l * .txt'。 – Zeta