2017-01-07 4 views
3

Ich würde gerne Artgleichheit verwenden, die nur in GHC Kopf derzeit vorkommt.Wie überschreibe ich Obergrenzen in einem Haskell-Projekt?

Ich habe ein System installieren von GHC, und in meinem Projekt habe ich eine snapshot.yaml

resolver: nightly-2016-12-31 
compiler: ghc-8.1.20170103 

und stack.yaml dementsprechend kann ich mit stack path sehen

resolver: 
    name: snapshot 
    location: snapshot.yaml 

aktualisiert, dass es die richtige Compiler nimmt .

Wenn ich mein Projekt bauen jetzt habe ich

In the dependencies for array-0.5.1.1: 
    base-4.10.0.0 must match >=4.5 && <4.10 (latest applicable is 4.9.0.0) 
needed due to bookkeeper-0.2.4 -> array-0.5.1.1 

Wie kann ich von meinem Projekt überschreiben die obere gebundenen erklärt von Array-0.5.1.1, die wahrscheinlich nicht ist eigentlich erforderlich?

+0

Versuchen Sie '-Allow-neuere'. – sjakobi

+1

Oh, anscheinend ist das keine CLI-Option. [Sie können es jedoch im Stack.yaml setzen.] (Https://docs.haskellstack.org/en/stable/yaml_configuration/#allow-newer) – sjakobi

Antwort

2

Ihr Hauptproblem ist, dass die nightly-2016-12-31 Snapshot uses GHC 8.0.1 and base 4.9.0.0, und so ist es nicht kompatibel mit Ihrer Installation von GHC 8.1. Es sollte set the resolver to ghc-8.1.20170103 reichen, damit keine Snapshots verwendet werden. (Es gibt auch eine system-ghc Option, aber da Stack bereits den richtigen Compiler verwendet, denke ich, dass es nicht notwendig sein wird, das einzuschalten.) Wenn Sie Pakete benötigen, die nicht mit GHC gebündelt sind, müssen Sie sie dem hinzufügen extra-deps in stack.yaml (Wenn Sie bereits eine .cabal Datei haben, die Ihre Abhängigkeiten angibt, kann stack solver --update-config verwendet werden, um das automatisch zu füllen).

+0

Danke für die Tipps. Wenn ich den Resolver auf ghc-8.1.20170103 setze, findet ein Solver-Versuch keine Pläne, da er sich über alle Bibliotheken beschwert, die diese obere Grenze für die Basis angeben. so frustrierend. – nicolas

+0

oh ok, der Solver ignoriert das 'allow-newer' Flag in stack.yaml gesetzt. Wenn man nur versucht, Pakete zu erstellen und hinzuzufügen, was herauskommt, führt das zu einer Kompilierung. – nicolas

Verwandte Themen