haskell - 加载具有依赖关系的 Haskell 模块

标签 haskell import ghc ghci

我不确定我的问题出在哪里。我有三个模块 A.hs、B.hs 和 C.hs。所有都位于 C:\..path...\folder 并且模块 B 和 C 都从 A 导入。

也就是说,模块 B 和 C 都包含行 import A

我可以 :l C:\..path..\folder\A.hs 在 gchi 中播放它的内容;但是,当我尝试 :l C:\..path..\folder\B.hs:l C:\..path..\folder 时,ghci 给出了以下错误\C.hs

    Could not find module `A'
    Use -v to see a list of the files searched for.
Failed, modules loaded: none.

我觉得这很奇怪,因为我可以毫不费力地将 B.hs 编译为 B.exe 并运行可执行文件。我如何编译和运行一个我无法加载到 ghci 中的模块?或者,为什么导入在编译时成功但加载失败;特别是当被导入的模块本身是可加载的时?

最佳答案

默认情况下,ghci 只在当前目录中搜索导入的模块。首先,当前目录是用于启动 ghci 的目录;但它可以在 ghci 中使用 :cd 命令进行更改。因此,您可以

> :cd C:\...path...\folder
> :l B.hs

这应该在现在的当前目录中找到 B.hsA.hs。或者(特别是如果您在多个目录中有模块)您可以使用 -i 命令行选项启动 ghci 以将目录添加到其模块搜索路径。例如,在您的命令提示符下您可能会

% ghci -iC:\...path...\folder
> :l B.hs

这将指示 ghci 在其搜索路径中包含 C:\...path...\folder,因此找到 B.hsA.hs 即使它不是当前目录。

关于haskell - 加载具有依赖关系的 Haskell 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36994085/

相关文章:

java - 导入文本文件并在 Java 中逐行读取

haskell - 为什么GHC 7.8需要动态库?

powershell - Neo4j(Windows)-无法增加Neo4jImport工具的堆内存大小

具有类型构造函数的类型类定义的 Haskell 实例

案例陈述中的haskell部分应用

haskell - 来自单可遍历的 "concatMap"如何能够与 "pull out"共同论证?

java - 从 java/groovy 中的文本文件读取导入

Haskell 无法统一类型​​实例方程

haskell - 在 Archlinux 上设置 Haskell 的建议方法是什么?

Haskell:类型不匹配