2

依存関係の問題で問題が発生している可能性がありますが、完全にはわかりません。これが私の問題です。Data.Bsonライブラリを使用して、いくつかの(Text、Text)タプルをbsonフィールドに変換しています。この関数を定義すると、次のようになります。

typeMismatch :: (Text, Text) -> Field
typeMismatch tp = (fst tp) := (String (snd tp))

それは文句を言う:

Couldn't match expected type `Label' with actual type `Text'
Expected type: (Label, b0)
  Actual type: (Text, Text)

Fieldは基本的にBsonの単なるキー/値であり、キーはLabel、の同義語として定義され、Text値はValueStringその多くのコンストラクターの1つです(つまり、これはではありませんPrelude.String)。次に、最初のテキストをラベルに変更してみます。

typeMismatch :: (Label, Text) -> Field
typeMismatch tp = (fst tp) := (String (snd tp))

したがって、ラベルは一致しますが、それは私が望むものではありませんが、調査するためにこれを行っているだけですが、それでも文句を言います。

Couldn't match expected type `text-0.11.2.0:Data.Text.Internal.Text'
            with actual type `Text'
Expected type: (Label, text-0.11.2.0:Data.Text.Internal.Text)
  Actual type: (Label, Text)

そして、いくつかの依存関係の問題またはモジュールのインポートの問題があるようです。しかし、ライブラリを確認したところ、bsonはtext-0.11.2.0を使用しており、data.textもtext-0.11.2.0であるため、すべてが一貫している必要があります。

この問題を解決するにはどうすればよいですか?前もって感謝します。

編集:解決しました。「-v」フラグを追加して、コンパイル時に依存関係を確認します。どういうわけか、どこかにテキスト-0.11.2.2が潜んでいます。ghc-pkgはそのパッケージの登録を解除し、コンパイルします。これから「haskell依存関係地獄」を回避する方法を学び始める必要があります。

4

2 に答える 2

2

ほとんどの場合、ファイルcabal-dev内のパッケージバージョンを指定して依存関係地獄を回避でき.cabalます。

于 2012-08-14T20:02:11.110 に答える
1

https://github.com/Paczesiowa/hsenvも別のオプションです。よりも少し透過的であることがわかりcabal-devました。rvmまたはvirtualenvのいずれかを使用したことがある場合は、それを機能させるための使用方法をすでに知っています。

于 2012-08-15T15:31:21.293 に答える