14

当我想重新编译 xmonad 以更改配置时,我得到了这个:

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

Xmonad 是通过 pacman 安装的。当我收到此错误时,我从 pacman 中删除了 xmonad,然后尝试 cabal 安装 xmonad。我再次遇到上述错误,但我能够通过从 cabal 文件中删除 haskell98 来解决它。

现在我想用 MOD-Q 重新配置 xmonad,错误再次出现,我不知道如何解决这个问题。任何帮助表示赞赏。

我使用 GHC 7.0.3 版(来自 Haskell 平台)

4

3 回答 3

15

试试这个:

ghc-pkg hide haskell98
于 2011-09-07T20:16:32.033 回答
2

在我的情况下,不幸的是隐藏 haskell98 是不够的,我不得不从我的 .cabal 构建文件的构建依赖列表中删除过时的 haskell98(当然保持基数 >= 4)。之前读过:

build-depends:  
    base >= 4,
    haskell98

... 进而 ...

build-depends:  
    base >= 4

上面的错误消息“模棱两可的模块名称`Prelude'”消失了。

于 2012-07-14T20:50:30.273 回答
1

请参阅有关同一主题的此 GHC错误票:

GHC 从 7.2.1 版本开始不支持同时使用haskell98 包和base包。该haskell-src软件包中包含这两个build-depends,因此需要对其进行修改。大多数时候,您想要做的是从 中删除haskell98build-depends并修复 Haskell 98 模块的任何导入以指向它们的基本等效项。

错误票已关闭(没有修复),原始文件管理器响应:

是的,从 .cabal 文件中删除 haskell98 似乎已经修复了它 - 它确实编译没有错误。看起来它没有任何导入到 haskell98,因为根据 .cabal 文件中的评论。

于 2012-08-24T11:57:35.053 回答