2012-03-28 19 views
4

私はcabalのBNF converterをインストールしようとしていましたが、ビルドに問題があります。どうやら、このパッケージは、haskell98とバージョン4のベースのモジュールを組み合わせて使用​​しています。これは、haskell98で隠してコンパイルするといくつかのモジュールが見つからないという問題があります。しかし、もしあなたがhaskell98を公開してコンパイルすると、ghcは新しいPreludeまたはhaskell98 Preludeを使用するはずです。あいまいなPreludeのためにCabalパッケージを構築できません

エラーメッセージ:

Main.hs:1:1: 
    Ambiguous module name `Prelude': 
    it was found in multiple packages: base haskell98-2.0.0.1 

どのようにこのようなエラーを解決するのですか?

答えて

7

修正プログラムをアップロードするメンテナ。または、応答がない場合は、自分で保守を引き継ぐことを検討してください。

これは、haskell98は他のモジュールの関数を複製する互換性パッケージであるためです。それがHaskell-98と互換性がない限り、新しいコードはそれに依存すべきではありません。しかし、この変更は比較的最近のものであり、古いコードの多くは "base"と "haskell98"の両方を参照していますが、実際には "haskell98"パッケージを使用していません。

すぐにcabal unpack BNFCを実行し、 ".cabal"ファイルを編集し、 "build-depends:"フィールドからhaskell98への参照を削除します。ライブラリのバージョン番号もバンプします(この手順は実行ファイルには関係ありません)。次に、編集したばかりのローカルコピーからビルドしてインストールします。 BNFCがmtlバージョン1を使用することになっていた場合は、他の問題があるかもしれませんが、必要に応じて自分で制約を追加することができます。

関連する問題