GHCi无法找到我的程序模块

Mar*_*ark 5 emacs haskell cabal

我正在开展一个项目,我正在使用Cabal进行管理.我已经指定了源文件,模块,所有东西的目录.我的所有文件都与相应的模块具有相同的名称,保留了大小写.

我可以:

$ cabal configure
$ cabal build
Run Code Online (Sandbox Code Playgroud)

没有问题.

但是,想象一下我Module在文件中有一个模块Module.hs,并且文件File.hs在同一目录中.现在,当我尝试File.hs从Emacs 加载进行测试时,我得到以下内容:

____Could not find module ‘Module’
    It is a member of the hidden package ‘ghc-7.8.3’.
    Use -v to see a list of the files searched for.
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)

全部内容File.hs:

module File where
import Module
Run Code Online (Sandbox Code Playgroud)

如何让它找到我的项目的文件?

Jam*_*ies 5

您可以通过Cabal启动REPL,如下所示:

#cutal repl

这与运行相同ghci,但会考虑cabal安装本地或沙箱包存储库所安装的任何其他依赖项.

  • 启动 repl 后,您可以直接使用 `:load` 导入单个源文件。ie `:load MyFile.hs` 这样你就可以直接访问内部/私有成员 (2认同)

viv*_*ian 5

您需要告诉 GHCi 在哪里可以找到您的源文件。例如,如果你的项目目录是./foo并且你有你的源文件,./foo/src你需要说(来自你的项目目录):

:set -isrc
Run Code Online (Sandbox Code Playgroud)

在 GHCi 中的命令提示符处。然后,您将可以访问加载了C-c C-l.

您还需要确保您没有cabal install编辑您的包,否则将加载包,而不是项目源文件。