1

次のようにパッケージ Data.Map をインポートします: import qualified Data.Map as M、型の変数があります:

> :t particleMap 
particleMap :: M.Map PID (Particle (Float, Float))

particleMapここで、変数を次のような型のデータに渡したいと思います。

> :t Ensemble
Ensemble
  :: [([Edge], Point v -> Point v -> v)]
     -> containers-0.4.2.1:Data.Map.Map PID (Particle v) -> Ensemble v

2番目の引数を見てください。それはcontainers-0.4.2.1:Data.Map.Map PID (Particle v)、好きではないData.Map.Map、または好きではないM.Map。最後に、次のようなエラーが発生します。

Couldn't match expected type `containers-0.4.2.1:Data.Map.Map
                                    PID (Particle (Float, Float))'
                with actual type `M.Map PID (Particle (Float, Float))'

パッケージ コンテナーのバージョンを再確認したところ、2 つのバージョンがインストールされていることに気付きました。

インストールされているバージョン: 0.4.2.1、0.5.1.0

したがって、コンピューターが2つのバージョンと混同されているため、エラーが発生すると思います。それは...ですか?

4

1 に答える 1

1

GHC は通常、利用可能なすべてのパッケージの最新バージョンからインポートする必要があると想定します。新しいバージョンのコンテナーが依存関係として取り込まれた可能性があります。あなたがした正しいことは、登録を解除することでした。そうしたくなかったらghc-pkg hide、デフォルトで ghc がそれを使用しないようにすることもできたでしょう。

いずれにせよ、典型的な次のステップは、新しいコンテナをプルすることを余儀なくされた犯人パッケージを見つけ、古いものを使用するようにそのカバールを変更することです.

これは、コンテナが依存関係のチェーンのはるか下にあるパッケージであるためです。更新すると、通常、「世界を再構築」して、他のすべてを新しいバージョンで使用できるようにする必要がありますが、これはしばしば非常に困難です。

于 2013-02-07T16:27:59.800 に答える