模块名不明确 `Prelude'

14

当我想重新编译xmonad以更改配置时,我会遇到这个问题:

Implicit import declaration:
    Ambiguous module name `Prelude':
      it was found in multiple packages: base haskell98-2.0.0.0

我通过 pacman 安装了 Xmonad。当我遇到这个错误时,我从 pacman 中移除了 xmonad,然后尝试使用 cabal 安装 xmonad。我再次遇到了上述错误,但是我通过从 cabal 文件中删除 haskell98 来解决了这个问题。

现在我想用 MOD-Q 重新配置 xmonad,但是错误再次出现,我不知道该如何解决。欢迎任何帮助。

我使用的 GHC 版本为 7.0.3(来自 Haskell 平台)。

3个回答

15

尝试这个:

ghc-pkg hide haskell98

是的,我刚刚用以下命令成功地使它工作了:cd ~/.xmonad ghc xmonad.hs -hide-package haskell98 mv xmonad-x86_64-linux xmonad-x86_64-linux.good mv xmonad xmonad-x86_64-linux 然后我重新启动了我的电脑(重新启动X可能已经足够了)。现在我需要以某种方式自动化这个过程。此外,我需要学习如何格式化注释。 - somesoaccount
我刚刚注意到你提到了ghc-pkg。我之前尝试过,但没有成功。 - somesoaccount
好的,我有点困惑。我之前认为我尝试过你的建议,但显然我没有。你的解决方案非常有效! - somesoaccount
打开二进制临时文件:权限被拒绝 讨厌Win7用户账户控制 - John Dvorak

2
在我的情况下,仅隐藏haskell98是不够的,我必须从我的.cabal构建文件的build-depends列表中删除过时的haskell98(当然保留base >= 4)。它之前的内容是:
build-depends:  
    base >= 4,
    haskell98

...然后...

build-depends:  
    base >= 4

这样,上面的错误信息“模块名`Prelude'不明确”就消失了。


当我这样做时,我得到了“找不到模块`System'”的错误信息。 - BЈовић

1

请查看关于同一主题的 GHC 错误票

GHC 从版本 7.2.1 开始将不再支持同时使用 haskell98 包和 base 包。 haskell-src 包中包含这两个包,因此需要进行修改。大多数情况下,您需要从 build-depends 中删除 haskell98,并修复任何导入 Haskell 98 模块的指向其基本等效项。

该错误票已关闭(未修复),原提出者回应道:

是的,从 .cabal 文件中删除 haskell98 似乎已经解决了问题 - 它已经编译成功了。根据 .cabal 文件中的注释,它似乎没有导入到 haskell98。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接