In meiner Anwendung muss ich einen Vektor mit einem beliebigen Datentyp serialisieren, in diesem Fall ist eine Liste von Doubles. Zum Serialisieren des Vektors importiere ich Data.Vector.Binary.Data.Vector.Binary überlappt Binary [a] Instanz
Beim Laden des Moduls in GHCi der folgenden Fehler auftritt:
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
Ist die Liste eine Instanz von Vector? Ich habe die Dokumentation durchgesehen, konnte aber keine solche Instanz finden.
Was kann ich tun, um diese Struktur zu serialisieren?
Edit:
ich die folgenden Paketversionen bin mit:
- Vektor-0.6.0.2
- Vektor-binary-Instanzen-0.1.2
- binär 0.5.0.2
auch hier ist ein Ausschnitt, der das Problem zeigt, diesmal mit einer Liste von Zeichen:
import Data.Binary
import Data.Vector.Binary
import qualified Data.ByteString.Lazy as L
main = L.writeFile "/tmp/aaa" $ encode "hello"
Könnten Sie bitte die Versionen von Binary und Vector, die Sie verwenden, posten? –
Ich stimme zu, dass GHCi davon ausgeht, dass Listen Vektoren sind. Ich habe den Quellcode für Vektor-Binär-Instanzen durchgesehen und nicht gefunden. –
Es ist nicht offensichtlich. Edward Kmett erklärte dieses Problem vor nicht langer Zeit in http://stackoverflow.com/questions/3213490/how-do-i-write-if-typeclass-a-thena-a-iso-in-instance-of-b -by-this-definiti –