首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在WinGHCi中查看当前工作目录

如何在WinGHCi中查看当前工作目录
EN

Stack Overflow用户
提问于 2012-06-28 17:53:10
回答 3查看 16.6K关注 0票数 34

我已经开始自学Haskell,并为此安装了Haskell平台 for Windows。我现在正在使用WinGHCi。我了解到它有用于更改目录的命令:cd。但问题是,我如何知道我目前在哪个目录中?不知道这一点,首先我为什么要改变目录。我找了很多遍,但找不到答案。

请告诉我是否有方法知道当前的工作目录。最好将命令提示符本身配置为显示当前目录,就像Linux的控制台一样。

按照丹尼尔的建议,我做到了以下几点:

  • 由于我在Windows 7上工作,没有.ghci文件(我认为它适用于类似Unix的操作系统),所以我在C:\Users\Apelles\AppData\Roaming\ghc文件夹中创建了一个文件ghci.conf,名为这里有指示
  • 复制从丹尼尔的答案粘贴脚本到ghci.conf
  • 然后我启动了ghci.exe,这是一个类似控制台的窗口。我注意到它加载的模块比以前多了几个模块。以下是快照:

正如您所看到的,它加载了更多模块,最后一行说,

无法解析提示符字符串。使用Haskell语法。

什么意思?哪一行引起了问题(从下面的脚本)?

代码语言:javascript
运行
复制
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成功地完成了一些任务,但在某个时候失败了。怎么解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2014-02-27 16:50:15

System.Directory.getCurrentDirectory来自directory包。

票数 31
EN

Stack Overflow用户

发布于 2012-06-29 13:55:37

穷人将ghci提示符设置为当前工作目录的解决方案将

代码语言:javascript
运行
复制
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文件中。

在第一行中,我们定义了cur :: String -> IO String,它获取当前目录并返回ghci命令以相应地设置提示符。然后,我们定义了一个执行该操作的ghci命令doprompt和一个更改目录并设置提示符的命令。最后一行在启动时执行:doprompt

不幸的是,这并不能使:cd dir反映目录的变化,因此必须随后执行手动:doprompt,或者使用:mycd来更改目录。

为了避免太长的提示,您可以通过删除文件路径的初始部分来操作getCurrentDirectory的结果。

这种简单方法的另一个缺点是提示符不再包含已加载模块的信息。我相信所有这些都是可以克服的,但我现在还没有足够的动力去挖掘。

票数 4
EN

Stack Overflow用户

发布于 2019-03-14 10:45:43

在ghci命令提示符中,输入:! cd,它将为当前目录提供输出。通常,在ghci命令提示符中,使用:!后跟shell命令来运行任何shell命令。在Windows和Mac/Linux上,shell是不同的,所以您可以使用的命令是不同的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11250262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档