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

时间:2015-07-03 19:41:55

标签: haskell

我是Haskell的新手并使用Windows PC。我正在尝试设置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>

根据这个site,我必须将我的Haskell文件保存到当前目录或指定其他目录才能访问它们。这是我不知道该怎么办。

我的问题:

  1. 如何设置当前目录?
  2. 如何让GHCi告诉我当前目录的路径是什么,以便我可以查看我想要的内容?
  3. 请从行

    开始解释
    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中的当前目录,然后运行上面的代码。

3 个答案:

答案 0 :(得分:20)

  

如何设置当前目录?

GHCi提供:cd <dir>命令。您可以使用:?获取所有命令的列表。如果省略该目录,您将再次转到家中。

  

如何让GHCi告诉我当前目录的路径是什么,以便我可以查看我想要的内容?

有趣的是,GHCi没有为此提供命令,但您可以使用Window的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

答案 1 :(得分:1)

在带有 GHCi-8.10.4 的 Windows 10 中对我有用的是

:cd c:\\Work\Finance\UT Trial Balance

:cd ..

效果也很好。人们假设 Haskell 字符串 [Char] 但不是,文字字符串。这些空间甚至不必转义。 Windows 反斜杠也适用。啊。 你还是得用

:! cd

看看你在哪里。我假设,现在我可以在我的工作目录中:l我的代码。

如果你和 :! bash -i 一起出去,它是一个叉子,是分开的。你可以全部 cd 但它不会改变 GHCi 工作目录。

:! pwd 在我的 GHCi 中有效。

现在你在安装 Haskell-dev 时会得到很多 Linux 工具。好可爱。去年我摆脱了 Cygwin 并在 Windows 中安装了 Ubuntu 20.04.1 LTS,这是 Windows 上真正的 Linux,但命令在 Windows 命令行中不可用。现在,有了 Haskell-dev,我可以免费获得随处可见的 Linux。喜悦。

答案 2 :(得分:0)

正如@Zeta所写,答案是:cd 但还有更多,用于搜索像我这样的人

  • 路径::cd
  • 带有命令::! cd的路径,就像vim !属于用户的操作系统控制台一样
  • :cd <DIR>几乎等于:! cd <DIR>
  • 还有另一种方式:show paths显示了一些路径,并且存在当前的分歧

PS>搜索了一些conf.d(〜/ .ghci / ghci.conf),但失败了。