为什么突然找不到模块?

时间:2011-06-13 04:36:28

标签: haskell

当我尝试加载时,Eval.hsData.hs导入模块Eval.hs中的模块TI.DataData.hs中有两个文件交互式Eval.hs(在emacs haskell模式下:Ctrl-c, Ctrl l),它说找不到Data.hs中定义的模块,但是之前它已成功加载,为什么突然它不能?? 顺便说一下,我注意到我第一次执行Ctrl-c, Ctrl l,即交互窗口:

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> :cd ~/.cabal/                                                          
Prelude> :load "../hs/TI/Eval.hs"                                               

../hs/TI/Eval.hs:2:7:                                                           
    Could not find module `TI.Data':
      Use -v to see a list of the files searched for.
Failed, modules loaded: none.

4 个答案:

答案 0 :(得分:6)

我有时在Emacs上遇到与haskell-mode相同的问题。我的解决方法是

Prelude> :cd ~/hs/TI
Prelude> :load "Eval.hs"

现在,当您想重新加载模块时,必须使用

Prelude> :r 

而不是Ctrl-C,Ctrl-l。

如果有人知道更好的方法,请告诉我。

-deech

答案 1 :(得分:0)

尝试:

Prelude> :cd ~/hs
Prelude> :load "TI/Eval.hs"

如果模块实际上与Subdirectory.Contains.A类似,那么工作目录必须是目录Subdirectory

答案 2 :(得分:0)

尝试添加

(inferior-haskell-find-project-root nil)

到自定义设置变量。它将不再是:cd。

一个更好的解决方案是找出为什么inf-haskell.el中的函数不能正常工作

答案 3 :(得分:0)

简单地运行

:set -isrc -imyothersrcdir

添加任何源目录。您可以将此行放在运行GHCi的目录中的.ghci文件中。

或者只使用cabal repl,它会根据您的cabal文件为您执行此操作。