ghc-mod无法找到用户安装的模块

问题描述:

我有一种情况,其中ghc-mod无法找到安装在我的〜/ .ghc /目录中的模块。ghc-mod无法找到用户安装的模块

程序(foo.hs)就是:

import Control.Monad.Loops 
main = undefined 

ghci负荷foo.hs没有任何错误。

ghc-pkg list产生输出:

/Library/Frameworks/GHC.framework/Versions/7.8.3-x86_64/usr/lib/ghc-7.8.3/package.conf.d 
    Cabal-1.18.1.4 
    GLURaw-1.4.0.1 
    ... 
~/.ghc/x86_64-darwin-7.8.3/package.conf.d: 
    ... 
    monad-loops-0.4.2.1 

ghc-mod check foo.hs错误不与:

x.hs:4:8:Could not find module ‘Control.Monad.Loops’Perhaps you meant Control.Monad.Cont (from mtl-2.1.3.1) Control.Monad.List (from mtl-2.1.3.1) Control.Monad.Trans (from mtl-2.1.3.1)Use -v to see a list of the files searched for. 

ghc-mod位于〜/资源库/哈斯克尔/ bin并ghc-mod -v发射:

ghc-mod version 5.0.1.2 compiled by GHC 7.8.3 
... 

有点奇怪的是我在Haskell模式下在Emacs中加载foo.hs时不会出现错误,并且推测也使用ghc-mod

有没有办法进一步调试和/或配置ghc-mod来查看我的〜/ .ghc目录?

+0

这是一个cabal项目的一部分吗?如果是这样的话,那么当前的ghc-mod中有一个bug可能需要一个“cabal clean”,如果你已经改变了已安装的软件包的话。 – 2014-09-05 18:37:40

+0

否 - 目录中没有cabal文件。 – ErikR 2014-09-05 18:48:41

+0

Cabal通常是安装用户库时最简单和最安全的方式。如果你添加一个cabal文件,把它指向你的'foo.hs',然后运行'cabal install',你应该很好。您还需要在cabal文件中添加'monad-loops'作为依赖项,但'cabal init'会为您创建一个框架文件,有时您可以从代码中为您解决这个问题。 – bheklilr 2014-09-05 19:22:35

答案是:ghc-mod将寻找一个cabal.sandbox.config文件在当前工作目录下的所有父目录和使用,如果它发现一个,那就是躲在我~/.ghc包目录。

+1

看起来我发现你的旧问题;虽然我有类似的问题,但这不是解决我的问题的解决方案。我做了搜索,并且没有隐藏在父目录中的'cabal.sandbox.conf'。这让我仍然没有解决方案,不幸的是......--( – 2015-01-06 06:37:22