如何获取 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