如何获取 Haskell 中 openFile 的路径?
How to get the path for openFile in Haskell?
我有以下抛出 运行time 异常的程序:
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
我有以下抛出 运行time 异常的程序:
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