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

我现在位于$HOME目录中,并且可以touch aaa创建一个文件。

然后我启动ghci。我可以import System.Directory导入此程序包。

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

那是什么问题呢?如果发现不清楚,请编辑我。谢谢。

最佳答案

如果要像外壳一样扩展~,则可以定义一个函数

expandHome :: FilePath -> FilePath -> FilePath
expandHome home ('~':xs) = home ++ xs
expandHome home path     = path


这可以称为

λ> h <- getHomeDirectory
λ> expandHome h "~/temp"
"/home/kqr/temp"

10-06 02:44