Ich habe ein einfaches Problem. Dieser Code sieht für mich vollkommen in Ordnung aus.Haskell Basic Show Instanz für einfache rekursive Datentyp nicht funktioniert
main = do
print("10-2")
let a = L
let b = E "abc" a
print(a)
print(b)
data List a = L | E a (List a)
instance (Show a) => Show (List a) where
show L = "Empty"
show (E a list) = (show a)++ (show list)
Aber es erzeugt Fehler folgende:
10-2.hs:5:5:
No instance for (Show a0) arising from a use of `print'
The type variable `a0' is ambiguous...
Ich kann nicht das Problem finden. Danke für die Hilfe!
Danke für die Antwort.Aber für meine List-Type ist der leere Ausdruck definiert. Es sollte keinen Unterschied machen. Das L kann nur von meinem Datentyp sein. Kann es nicht sein? Die seltsame Sache, die ich fand, war:: t L ist Liste –
@PaulOskarMayer Es gibt keine nur Liste, es kann nur Liste von * etwas *. Sie müssen sagen, was ich das * etwas *, bevor Sie drucken können. Hast du den angegebenen Link gelesen? –
Ja ich denke ich weiß was du meinst. Sie beziehen sich auf sofortige Bewertung? Wird die Liste nur ausgefüllt, wenn mehr als ein Konstruktor vorhanden ist? –