我不知道我的问题是什么。我有三个模块A.hs、B.hs和C.hs。它们都位于C:\..path...\folder上,模块B和C都是从A进口的。
也就是说,模块B和C都包含行import A
我可以在gchi中使用:l C:\..path..\folder\A.hs并播放它的内容;但是,当我尝试:l C:\..path..\folder\B.hs或:l C:\..path..\folder\C.hs时,ghci会给出以下错误
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中的模块?或者,为什么导入在编译时成功,但在加载时失败;尤其是当被导入的模块本身是可加载的时候?
发布于 2016-05-03 01:51:13
默认情况下,ghci只在当前目录中搜索导入的模块。首先,当前目录是用来启动ghci的目录;但是可以使用:cd命令在ghci中更改它。因此,你可以
> :cd C:\...path...\folder
> :l B.hs这应该可以在现在的目录中找到B.hs和A.hs。另外(特别是如果您在多个目录中有模块),您可以使用-i命令行选项启动ghci,将目录添加到其模块搜索路径中。例如,在命令提示符中,您可以
% ghci -iC:\...path...\folder
> :l B.hs它将指示ghci在其搜索路径中包括C:\...path...\folder,因此,即使它不是当前目录,也可以在那里找到B.hs和A.hs。
https://stackoverflow.com/questions/36994085
复制相似问题