如何在GHCi中设置当前目录?

19

我是Haskell的新手,使用的是Windows电脑。我正在尝试设置我的GHCi界面,以便我可以在文本编辑器中编写代码,然后使用GHCi执行它。

目前,我的GHCi读取的是:

$ ghci GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done.
Prelude>
根据这个网站,我必须将我的 Haskell 文件保存到当前目录或指定其他目录才能访问它们。但我不知道如何实现。
我的问题:
1. 如何设置当前目录? 2. 如何让 GHCi 告诉我当前目录的路径,以便我在需要时可以检查它的设置?
请从以下行开始解释:
Prelude>

如上所述,以便我能够跟随。

注意:

给出的 Haskell 代码示例为

文件名:Main.hs

main = print(fac(20))

fac 0 = 1
fac n = n * fac(n-1) 

并且在GHCi中

prelude> :load Main 
Compiling Main ( Main.hs, interpreted ) 
Ok, modules loaded: Main. 
*Main> fac 17 
355687428096000

所以我想将Main.hs保存到一个目录中,在GHCi中指定该目录为当前目录,然后运行上述代码。


你是如何启动 ghci 的?是通过命令行还是其他方式运行 ghci 的? - Gabriella Gonzalez
我的开始菜单里有一个链接,我点击它。这回答了你的问题吗? - Stan Shunpike
1
我不使用Windows,但是:!cd应该会给你当前的目录,而:cd <dir>则可以将目录更改为<dir> - jub0bs
如果你正在使用stack,你可以简单地运行stack ghci - SwiftsNamesake
3个回答

27

如何设置当前目录?

GHCi提供了:cd <dir>命令。您可以使用:?获取所有命令的列表。如果省略目录,则会再次更改为主目录。

如何让GHCi告诉我当前目录的路径,以便我想要检查它时可以查看它设置在哪里?

有趣的是, GHCi没有提供此命令,但您可以使用Windows的cd命令。为了执行外部命令,您需要使用:!,例如:! cd

示例

ghci> :! cd
C:\Users\Zeta
ghci> :cd workspace
ghci> :cd stackoverflow
ghci> :! cd
C:\Users\Zeta\workspace\stackoverflow
ghci> :cd
ghci> :!cd
C:\Users\Zeta

如果你省略了目录名,那么你会回到你的主目录。这实际上是 POSIX 标准下 cd 命令的行为,即使在 GHCi 中也是如此,如果 $HOME 被设置,则被 cd 隐含使用。(如果 $HOME 未设置,则行为是未定义的。bash 只会显示一个变量未设置的错误。) - anon
所有这些在 Mac 上的工作方式完全相同:Prelude>:! ls 将获取内容。Prelude>:! cd <YourChosenPath> 等。 - Tim

1

帮你解答一下,:cd 命令可以像 @Zeta 所说的那样使用。但是如果想要搜索类似我的人,则需要更多的信息。

  • 路径: :cd
  • 带命令的路径: :! cd 就像 vim 中的 ! 一样,是用户操作系统控制台的一部分。
  • :cd <DIR> 几乎等同于 :! cd <DIR>
  • 还有另一种方式,:show paths 显示一些路径,其中包括当前目录

PS> 搜索了一些 conf.d(~/.ghci/ghci.conf)之类的文件,但没有成功。


1
在Windows 10上,使用GHCi-8.10.4对我有效的方法是:
:cd c:\\Work\Finance\UT Trial Balance

:cd ..

效果不错。人们会认为是Haskell字符串[Char],但实际上是字面字符串。甚至空格也不需要转义。Windows的反斜杠也可以使用。唉。

不过,你仍然需要使用

:! cd

我希望你能看到你所在的位置。我假设现在我可以在我的工作目录中使用:l命令来运行我的代码。

如果你像这样使用:! bash -i,它会分叉并独立。你可以在其中移动,但它不会改变GHCi的工作目录。

:! pwd在我的GHCi中有效。

现在,在安装Haskell-dev时,您将获得许多Linux工具。这很棒。去年我摆脱了Cygwin,并在Windows上安装了Ubuntu 20.04.1 LTS,这是真正的Linux,但这些命令在Windows命令行中不可用。现在,通过Haskell-dev,我可以免费使用Linux。愉悦。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接