Неоднозначное имя модуля `Prelude '

Я получаю это, когда хочу перекомпилировать xmonad для изменения конфигурации:

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

Xmonad был установлен через pacman. Когда я получил эту ошибку, я удалил xmonad из pacman, а затем попытался установить xmlad. Я снова получил вышеуказанную ошибку, но я смог ее решить, удалив haskell98 из файла cabal.

Теперь я хочу перенастроить xmonad с MOD-Q, ошибка появляется снова, и я не знаю, как это исправить. Любая помощь была оценена.

Я использую GHC версии 7.0.3 (с платформы Haskell)

Ответы

Ответ 1

Попробуйте следующее:

ghc-pkg hide haskell98

Ответ 2

В моем случае скрытие haskell98, к сожалению, было недостаточным, мне пришлось удалить устаревший haskell98 из списка, зависящего от сборки, в моем файле сборки .cabal(сохраняя базу >= 4, конечно). Он читал раньше:

build-depends:  
    base >= 4,
    haskell98

... и затем...

build-depends:  
    base >= 4

С этим исчезло сообщение об ошибке "Недопустимое имя модуля" Прелюдия "выше.

Ответ 3

Смотрите этот GHC биг-код по этому вопросу:

GHC, начиная с версии 7.2.1, не будет поддерживать использование haskell98пакет и пакет base в одно и то же время. Пакет haskell-srcимеет оба из них в своем build-depends, поэтому он должен быть модифицирована. Большую часть времени вы хотите удалить haskell98от build-depends и исправить импорт импортных модулей Haskell 98 в указывают на их базовые эквиваленты.

Биг-билет был закрыт (без исправления), и исходный фидер ответил:

Да, удаление haskell98 из файла .cabal, похоже, исправил его - он компилировались без ошибок. Похоже, у него не было импорта to haskell98, потому что согласно комментарию в файле .cabal.