non-exhaustive-patterns

___ tag123vector ___ Ein Vektor ist ein eindimensionales Array: Er enthält Komponenten, auf die mit einem ganzzahligen Index zugegriffen werden kann. In einigen Sprachen kann die Größe eines Vektors nach Bedarf vergrößert oder verkleinert werden, um Elemente hinzuzufügen und zu entfernen, nachdem der Vektor erstellt wurde. Verwenden Sie "Vektorgrafiken" für die grafische Darstellung. ___ tag123haskell ___ Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerungsfreier Auswertung, umfangreicher Parallelitäts- und Parallelitätsunterstützung und einzigartigen Abstraktionsfunktionen. ___ qstntxt ___

Ich habe den folgenden Code

%Vor%

Beim Kompilieren oder Interpretieren mit %code% wird die folgende Warnung ausgegeben:

%Vor%

Normalerweise ist das zu erwarten. Normalerweise, selbst wenn ich meinen Grund dafür habe, dass meine Muster alle möglichen Fälle abdecken, gibt es keine Möglichkeit für den Compiler, dies zu wissen, ohne den Code auszuführen. Die Vollständigkeit der bereitgestellten Muster wird jedoch von der Typüberprüfung erzwungen, die zur Kompilierungszeit ausgeführt wird. Das Hinzufügen der von GHC vorgeschlagenen Muster führt zu einem Kompilierungszeitfehler:

%Vor%

Meine Frage lautet also: Spielen GHC-Warnungen mit GHC-Erweiterungen nicht gut? Sollen sie einander kennen? Ist diese Funktionalität (Warnungen unter Berücksichtigung von Erweiterungen) für eine zukünftige Version vorgesehen oder gibt es technische Einschränkungen bei der Implementierung dieser Funktion?

Es scheint, dass die Lösung einfach ist; Der Compiler kann versuchen, der Funktion das vermeintlich nicht angepasste Muster hinzuzufügen und den Typprüfer erneut zu fragen, ob das vorgeschlagene Muster gut typisiert ist. Wenn dies der Fall ist, kann es tatsächlich dem Benutzer als fehlendes Muster gemeldet werden.

    
___ qstnhdr ___ GHC beschwert sich über nicht vollständige Muster, die vom Typprüfer erzwungen werden ___ answer19374633 ___

Das sieht wie ein Fehler aus - hier ist eine etwas einfachere Version:

%Vor%

Es sieht auch so aus, als wäre es ein bekannter Bug oder Teil einer Familie bekannter Bugs - der nächste, den ich in ein paar Minuten suchen konnte, war # 3927 .

    
___ tag123gadt ___ Generalisierte algebraische Datentypen, GADTs, sind eine leistungsfähigere Form algebraischer Datentypen, die benutzerdefinierte Konstruktortypen unterstützen. ___ tag123ghc ___ Der Glasgow Haskell Compiler ist ein hochmoderner Open-Source-Compiler und eine interaktive Umgebung für die funktionale Sprache Haskell. Verwenden Sie dieses Tag für Fragen speziell zu GHC und nicht zu Haskell im Allgemeinen, da fast jeder es verwenden wird, sofern nicht anders angegeben. ___ tag123noneexhaustivepatterns ___ hilf uns dieses Wiki zu bearbeiten ___
1
Antwort

GHC beschwert sich über nicht vollständige Muster, die vom Typprüfer erzwungen werden

Ich habe den folgenden Code %Vor% Beim Kompilieren oder Interpretieren mit -Wall wird die folgende Warnung ausgegeben: %Vor% Normalerweise ist das zu erwarten. Normalerweise, selbst wenn ich meinen Grund dafür habe, dass meine Muster...
15.10.2013, 05:31