Xmonad 找不到模块 XMonad(或任何其他)

Dec*_*lis 7 haskell xmonad archlinux

每当 xmonad 启动、重新启动或重新编译时,我都会收到一条 xmessage:

xmonad.hs:1:8:
Could not find module `XMonad'
 Perhaps you meant
    Monad (needs flag -package haskell98-2.0.0.2)
    CgMonad (needs flag -package ghc-7.6.3)
    DsMonad (needs flag -package ghc-7.6.3)
 Use -v to see a list of the files searched for
Run Code Online (Sandbox Code Playgroud)

这并不能阻止它启动,但我只能在系统重新启动时看到 xmonad 或 xmobar 设置的更新。我目前的 xmonad.hs 只是

import XMonad

main = xmonad defaultConfig
Run Code Online (Sandbox Code Playgroud)

它仍然会产生错误。任何导入其他模块的尝试都会产生类似的结果。我已经从 Arch 存储库安装xmonad并xmonad-contrib安装了这两个模块,所以模块应该正确地位于 ghc 搜索路径中,对吗?我试过像其他一些来源建议的那样从 Cabal 重新安装软件包,但它变成了一个完全的混乱,所以我回到了 Arch 存储库,它应该可以工作。从这里去哪里有点不知所措;任何帮助将不胜感激。

编辑:ghc-pkg list xmonad返回

/usr/lib/ghc-7.6.3/packag.conf.d
    xmonad-0.11
/home/decalis/.ghc/x86_64-linux-7.6.3/package.conf.d
Run Code Online (Sandbox Code Playgroud)

和ghc-pkg check输出在这里:http : //pastebin.com/BsCPMn8M。看到这个问题后,问题变得更清楚了,但是~/.cabal当 pacman 从 Arch 存储库中解决了所有包及其依赖项时,我仍然不明白为什么要查看它。

And*_*zlo 6

对我来说,解决方案是运行,ghc-pkg recache因为 ghc 缓存由于某种原因不同步。在擦除整个 ghc 数据库之前值得尝试。


Rom*_*aka 5

在这种情况下,首先要尝试的事情之一是“从头开始”,即忘记您过去可能安装的所有本地软件包。

为此,请擦除(或重命名/移动)ghc 的软件包数据库,该数据库位于~/.ghc/$arch-$os-$ghcver(例如~/.ghc/i386-linux-7.6.3)下。或者~/.ghc干脆完全删除。