Wie ist die Instanz (Param B.ByteString) verschwunden?

9

Ich habe einen alten Code, der kompiliert wurde, aber jetzt nicht mehr. Ich mache mir Sorgen, dass ich ein Paketmanagement-Snafu getroffen habe, und ich bin wirklich schlecht darin, mit so etwas umzugehen. Ich habe es auf ein minimales Beispiel gescheitert.

%Vor%

Der Fehler, den ich bekomme, ist

%Vor%

Aber wenn ich mir den Quellcode für

anschaue %Vor%

Ich sehe

%Vor%

und

%Vor%

Relevante Versionsinformationen können

enthalten %Vor%

Wenn ich ghci frage

%Vor%

Ich bekomme eine kürzere Liste als die mysql-simple-Dokumentation würde mich erwarten.

%Vor%

aber ich nehme an, dass mir nur die Instanzen für das, was lokal im Bereich ist, sagen. Ich mache es dann

%Vor%

Weitere Untersuchungen deuten auf eine potenzielle Problemquelle hin:

%Vor%

Ich nehme an, dass ByteString mit der Instanz von 0.10.6.0 stammt und sich von der Version unterscheidet, die ich bekomme, wenn ich genau den gleichen Import in meine Quelldatei schreibe. Wenn das so ist, bin ich ein bisschen verärgert darüber, wie viel Arbeit ich tun musste, um das herauszufinden: Es wäre großartig, wenn "Keine Instanz für Foo" hinzufügen würde, obwohl es eine Instanz für ein ganz anderes Foo gibt.

Das ist Kabale Hölle, richtig? Kann ich mysql-simple rebuild mit der neueren Version machen? Ich probierte ghc-pkg unregister mysql-simple und dann cabal install mysql-simple , aber ohne Erfolg.

Was ist eine gute Reparaturstrategie?

    
pigworker 02.09.2016, 13:26
quelle

1 Antwort

3
  

Was ist eine gute Reparaturstrategie?

Ich fordere Sie auf, den Code zu cabalisieren und cabal sandbox oder stack zu verwenden. Es sollte das Problem an erster Stelle verhindern. Um zu reparieren, sollten Sie herausfinden, welches Paket zweimal installiert ist (es scheint bytestring zu sein) und die Registrierung aufzuheben.

  

Ich bin ein bisschen verärgert darüber, wie viel Arbeit ich tun musste, um das herauszufinden: Es wäre großartig, wenn "Keine Instanz für Foo" hinzufügen würde, "obwohl es eine Instanz für ein ganz anderes Foo gibt".

Ich weiß , was Sie fühlen. Zum Glück ist es bereits behoben , Sie sollten also eine bessere Fehlermeldung von ghc-8

bekommen     
Yuras 02.09.2016 14:52
quelle

Tags und Links