私のアプリケーションでは、任意のデータ型を含むベクトルをシリアル化する必要があります。この場合は、Double のリストです。ベクトルをシリアル化するために、Data.Vector.Binary をインポートしています。
モジュールを GHCi にロードすると、次のエラーが発生します。
Overlapping instances for Binary [Double]
arising from a use of `decode' at Statistics.hs:57:33-42
Matching instances:
instance (Data.Vector.Generic.Base.Vector v a, Binary a) =>
Binary (v a)
-- Defined in Data.Vector.Binary
instance (Binary a) => Binary [a] -- Defined in Data.Binary
リストは Vector のインスタンスですか? ドキュメントを調べましたが、そのようなインスタンスは見つかりませんでした。
この構造をシリアライズできるようにするにはどうすればよいですか?
編集:
次のパッケージ バージョンを使用しています。
- ベクトル-0.6.0.2
- ベクトル-バイナリ-インスタンス-0.1.2
- バイナリ-0.5.0.2
また、問題を示すスニペットを次に示します。今回は文字のリストを示します。
import Data.Binary
import Data.Vector.Binary
import qualified Data.ByteString.Lazy as L
main = L.writeFile "/tmp/aaa" $ encode "hello"