如何在Haskell中获取openFile的路径?

时间:2016-04-18 12:57:22

标签: macos haskell path functional-programming main

我有以下程序抛出运行时异常:

import System.IO

main :: IO ()
main = do
  handle <- openFile "palindrome.txt" ReadMode
  input  <- hGetContents handle
  hClose handle

它会进行类型检查,但每当我尝试运行main时,我都会收到错误:

Atom session on Mac OS X

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您当前的程序使用相对路径。因此,该文件必须位于启动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