我已经开始自学Haskell了,为此我已经为Windows安装了The Haskell Platform。截至目前,我正在使用WinGHCi
。我了解到它有用于更改目录的命令:cd
。但问题是,我怎么知道我目前在哪个目录?不知道为什么我会想改变目录。我搜查了很多,但找不到答案。如何在WinGHCi中查看当前工作目录
请告诉我是否有办法了解当前工作目录。最好我想配置命令提示符来显示当前目录,就像Linux的控制台一样。
继@丹尼尔的建议下,我做了这些:
- 由于我的工作在Windows 7上,没有
.ghci
文件(我认为这是类Unix操作系统),所以我创建了一个文件ghci.conf
在C:\Users\Apelles\AppData\Roaming\ghc
文件夹中,如it is instructed here。 - 将丹尼尔答案中的脚本复制粘贴到
ghci.conf
。 - 然后我开始
ghci.exe
这是一个类似控制台的窗口。我注意到它装载的模块比之前通常使用的还要少。这里是快照:
正如你可以看到它加载多个模块,最后一行说,
无法解析提示字符串。使用Haskell语法。
这是什么意思?哪一行导致问题(来自以下脚本)?
let cur fill = do { cwd <- System.Directory.getCurrentDirectory; return (":set prompt \"" ++ cwd ++ fill ++ " \""); }
:def doprompt (\_ -> cur ">")
:def mycd (\dir -> System.Directory.setCurrentDirectory dir >> cur ">")
:doprompt
另外,如果我重新命名ghci.conf
文件到一些随机的名字,然后启动ghci.exe
,它加载这些模块:
正如我以前说过,它加载更少的模块的数量,这意味着与ghci.conf,ghci.exe
做成功,但在某些时候失败。如何解决这个问题?
尝试'前奏>:! pwd'(或任何Windows相当于pwd的)。我认为WinGHCi在底下运行一个普通的ghci,所以这应该工作。 –
@DanielFischer:这很好。是否可以配置命令提示符本身? – Nawaz
是的,你可以使用':set prompt Whatever'(在'ghci命令的简短帮助中键入':?'''')来配置提示符。然而,这是每次会议。为了使它成为永久的,请在'.ghci'文件中进行(我认为它们在Windows上的调用方式不同,不记得是什么)。不过,我不确定如何将其设置为当前目录。 –