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.
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 .