Ich bin auf eine Situation gestoßen, in der ich Musteranpassungen auf Operatoren vornehmen möchte. Dies löst jedoch einen Pattern match(es) are overlapped
Fehler mit GHC. Ich kann nicht herausfinden, warum. Ist ein Mustervergleich auf Operatoren nicht erlaubt? Ich nehme an, dass seit dem Einschließen eines Operator-Symbols in Klammern converts it into an identifier dies funktioniert haben sollte.Musterübereinstimmung (en) sind überlappt - Musteranpassung auf Operatoren
Es gibt andere Möglichkeiten, die ich erreichen kann, was ich tun möchte. Ich bin nur neugierig, warum das nicht funktioniert.
Ihre erste Zeile entspricht einer beliebigen Funktion und bindet sie lokal an den Infix-Operator +. Die nachfolgenden Zeilen sind somit überforderungsbedürftig, daher die Warnung. Beachten Sie, dass Funktionssymbole, Infix oder nicht, alle lokal durch Musterabgleich auf diese Weise wiederhergestellt werden können. Nur großgeschriebene Konstruktoren (oder: -fixierte Infix-Konstruktoren) und Literale stimmen nur mit sich selbst und dann nur mit Typen erster Ordnung überein. Haskell gibt (fast) keine Möglichkeit, die intensionalen Eigenschaften von Funktionen zu untersuchen: (Nebenbei bemerkt) Sie können nur ihre Dehnungseigenschaften ausnutzen, indem Sie sie anwenden. "Ist das die + Funktion?" ist nicht erlaubt. – pigworker
@pigworker, dies erklärt, warum ich die Botschaft "Diese Bindung überschattet die bestehende Auflösungsdefinition" bekommen habe. Danke für die Information. –