ich mit dem folgenden algebraischen Datentyp in PURESCRIPT gerade arbeite ...(PURESCRIPT) Wie kann ich Mustererkennung auf einer algebraischen Datentyp, die „leer-Typ“ ist
data Extended a = Infinite | Finite a
v1 = Finite 11
v2 = Infinite
Ich habe Probleme herauszufinden, wie man den "Infinite" -Fall mattiert, da es scheint, dass v2
den Typ forall t140. Extended t140
hat. Ich nehme an, dass t140 eine Art Platzhalter ist, den der Compiler automatisch ausfüllt. Der Typ von v1 ist Extended Int
. Also, wenn ich Setup eine Instanz von Gl Werte des Extended zu vergleichen, das Unendliche Fall stimmt nicht überein ...
instance extendedEq :: (Eq a) => Eq (Extended a) where
eq (Finite a) (Finite b) = eq a b
eq Infinite Infinite = true
eq Infinite _ = false
eq _ Infinite = false
Also, wenn ich versuche, und führen v2 == v2
ich den Fehler ...
No type class instance was found for Prelude.Eq (Extended _0)
Das macht Sinn, da ich mir vorstelle, dass es versucht, eine Eq-Instanz für t140 zu finden.
Also meine Frage ist, wie kann ich Mustererkennung auf dem Infinite-Typ?
Danke für die Antwort, das macht jetzt Sinn für mich. – Albtzrly