【发布时间】:2012-06-28 17:53:10
【问题描述】:
我已经开始自学 Haskell,为此我为 Windows 安装了 The Haskell Platform。我现在使用WinGHCi。我了解到它具有用于更改目录的命令:cd。但问题是,我怎么知道我目前在哪个目录?首先不知道为什么我要更改目录。我搜索了很多,但找不到答案。
请告诉我是否有办法知道当前工作目录。最好我想配置命令提示符本身以显示当前目录,很像 Linux 的控制台。
按照@Daniel 的建议,我做了这些:
- 由于我在 Windows 7 上工作,因此没有
.ghci文件(我认为它适用于类 Unix 操作系统),所以我在C:\Users\Apelles\AppData\Roaming\ghc文件夹中创建了一个文件ghci.conf,作为 it is instructed here。李> - 将 Daniel 回复中的脚本复制粘贴到
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 成功地做了一些事情,但在某些时候失败了。如何解决?
【问题讨论】:
-
试试
Prelude> :! pwd(或任何 Windows 的 pwd 等效项)。我认为 WinGHCi 在下面运行一个普通的 ghci,所以应该可以。 -
@DanielFischer:效果很好。是否可以配置命令提示符本身?
-
是的,您可以使用
:set prompt Whatever配置提示(输入:?以获得有关ghci 命令的简短帮助)。但是,这是每个会话。要使其永久化,请在您的.ghci文件中执行此操作(我认为它们在 Windows 上的名称不同,不记得是什么了)。不过,我不确定如何将其设置为当前目录。 -
@DanielFischer:
:set prompt Whatever?我应该用什么代替Whatever以便它显示当前工作目录?:set prompt :!pwd在这里没有帮助。 -
无关:如果不是太麻烦(如果您不打算进行开发,我认为不是,应该有安装程序),您应该升级到更新的 GHC ,当前版本为7.4.2。
标签: haskell ghci working-directory winghci