Ich habe geschafft, das folgende "minimale" Beispiel zu konstruieren, das mein Problem zeigt.Muster Synonyme führen zu unerschöpflichen Mustererkennung
Sofern die PatternSynonyms Erweiterung
aktiviertdata Vec = Vec Int Int
pattern Ve x y = Vec x y
f :: (Vec, Vec) -> Vec
f ([email protected](Ve a b), Ve c d)
| a > b = Vec c d
| otherwise = v
ich eine Warnung für die Funktion erhalten f
Warning: Pattern match(es) are non-exhaustive
In an equation for `f': Patterns not matched: (_, _)
sagen, wenn ich jeden Ve
mit Vec
ersetzt würde es nicht beschweren. Wie interferiert mein singuläres Muster-Synonym hier?
Ich bin sicher, es gibt Sachen, die ich nicht in Betracht gezogen habe, aber es scheint ziemlich seltsam, dass das nicht funktioniert. Ich hätte angenommen, dass eine einfache Makroexpansion für Synonyme jeglicher Art ausreichen würde. Sehen Sie nicht, wie dies die Überprüfung der Vollständigkeit beeinträchtigen würde. Danke für den Link. –
@Luka Es ist nicht so, dass es unmöglich ist, aber jemand muss die Arbeit machen. Muster-Synonyme sind eine absolut freiwillige Anstrengung. Und Sie können natürlich einen verbesserten Musterprüfer beisteuern. :) – augustss