问题描述
|
我在同一文件夹
Eval.hs
和Data.hs
中有两个文件,Eval.hs
中的模块导入Data.hs
中的模块TI.Data
,当我尝试以交互方式加载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.
解决方法
我有时在Emacs上使用haskell-mode会遇到同样的问题。我的解决方法是
Prelude> :cd ~/hs/TI
Prelude> :load \"Eval.hs\"
现在,当您想重新加载模块时,必须使用
Prelude> :r
而不是Ctrl-C,而是Ctrl-l。
如果有人知道更好的方法,请告诉我。
-deech
, 尝试:
Prelude> :cd ~/hs
Prelude> :load \"TI/Eval.hs\"
如果模块实际上类似于Subdirectory.Contains.A
,则工作目录必须为目录Subdirectory
。
, 尝试添加
(inferior-haskell-find-project-root nil)
您的自定义设置变量。它将不再:cd。
一个更好的解决方案是找出为什么ѭ16the中的函数不能正常工作
, 只需运行
:set -isrc -imyothersrcdir
添加任何源目录。您可以将此行放在运行GHCi的目录中的.ghci文件中。
或者,仅使用cabal repl,它会根据您的cabal文件为您执行此操作。