Haskell pattern matching eine Liste von Tupeln
Wie der post-Titel schon sagt, ich bin, definieren Sie die folgende Funktion in Haskell:
prop_LeftInverse :: (Eq a, Eq b) => [(a,b)] -> Bool
prop_LeftInverse (x,y):(xs,ys) = undefined
welcher als Eingabe eine Liste von Tupeln. Ich bin immer ein parse error in pattern
aber ich kann nicht ganz herausfinden, was es ist, und auch nicht gefunden habe keine Informationen zu diesem spezifischen Fall...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fast richtig:
Erste von allen, müssen Sie Klammern um das ganze Muster. Zweite, das erste element in der Liste ist ein Tupel, aber der rest der Liste ist einfach eine Liste von Tupeln, nicht ein Tupel von Listen.
Wenn man sich an einfache Mustererkennung auf eine generische Liste
Diese Werke alle Werte des Typs
a
oder alle Typen. Wenn Sie möchten, dass eine bestimmte Art, wieInt
Sie tun konnte,So, wenn Sie angeben möchten, dass ein Tupel:
sehen wir, dass das Muster, das auf ein Tupel genau wie wir schreiben im code, also mit einem am Anfang der Liste, wir müssen nur mit dem ersten element mit einem bestimmten Muster.
Den rest der Liste zugewiesen bekommt
rest
(obwohl Sie können es nennen, was Sie wollen).Ein weiteres Beispiel
Wenn Sie wollten, schnappen Sie sich die ersten beiden Tupel:
Oder die ersten drei:
Ich hoffe, Sie sehen das Muster (get it?)