为什么突然找不到模块?

问题描述

| 我在同一文件
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文件为您执行此操作。