【问题标题】:Ambiguous module name `Prelude'模棱两可的模块名称“前奏曲”
【发布时间】:2015-03-11 13:21:55
【问题描述】:

当我想重新编译 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 平台)

【问题讨论】:

    标签: haskell xmonad


    【解决方案1】:

    试试这个:

    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 可能就足够了)。现在我需要以某种方式自动化它。我还需要学习如何格式化 cmets。
    • 我刚刚注意到你提到了 ghc-pkg。我之前尝试过,但没有成功。
    • 好吧,我很困惑。我以为我以前尝试过您的建议,但显然我没有。您的解决方案就像一个魅力!
    • "openBinaryTempFile: 权限被拒绝" 讨厌 Win7 UAC
    【解决方案2】:

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

    build-depends:  
        base >= 4,
        haskell98
    

    ...然后...

    build-depends:  
        base >= 4
    

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

    【讨论】:

    • 当我这样做时,我得到了Could not find module System'`
    【解决方案3】:

    在同一主题上查看此 GHC bug ticket

    从版本 7.2.1 开始的 GHC 将不支持使用 haskell98 包和base 包同时进行。 haskell-src 包 在其build-depends 中有这两个,所以它需要是 修改的。大多数时候,你想要做的是删除haskell98 来自build-depends,并将 Haskell 98 模块的任何导入修复为 指向它们的基本等价物。

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

    是的,从 .cabal 文件中删除 haskell98 似乎已修复它 - 它 确实编译没有错误。好像没有进口 到 haskell98,因为根据 .cabal 文件中的注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多