在Haskell中与`System.Directory`混淆

ecc*_*tup 2 haskell ghci

我想知道这对我来说是否只是一个问题,以及如何解决这个问题.

我现在在$HOME目录中,我可以touch aaa创建一个文件.

然后我发射ghci.我可以import System.Directory导入这个包.

现在问题出现了.如果我尝试doesFileExist aaa,我会得到True因为它确实存在.如果我试试doesFileExist ~/aaa,我会得到False!!!

那有什么问题呢?如果您发现它不清楚,请编辑我.谢谢.

Dan*_*zer 7

与其他几种语言一样,Haskell不解析~as主目录.〜只是一个常见的unix shell功能.所以它正在寻找一个名为〜的文字目录.

而是试试

import System.FilePath.Posix
import System.Directory

homeDirFile :: FilePath -> IO FilePath
homeDirFile p = fmap (</>p) getHomeDirectory

main = homeDirFile "aaa" >>= doesFileExist >>= print
Run Code Online (Sandbox Code Playgroud)