Im Prinzip habe ich einen Baum-Datentyp definiert ist, die wie folgt definiert ist:einen Wert in einer geordneten Struktur in Haskell Einfügen
data Tree a = Empty
| Leaf a
| Node (Tree a) a (Tree a)
deriving (Eq, Ord, Show)
nun eine Funktion I haben zu schaffen, einen Wert in einer geordneten Baum einzufügen (it muss den Baum nicht sortieren, addiere einfach den Wert). Dies ist, was ich mit so weit habe kommen:
insert :: a -> Tree a -> Tree a
insert x Empty = Leaf x
insert x (Leaf m) | m < x = Node (Leaf x) m Empty
| otherwise = Node Empty m (Leaf x)
insert x (Node l m r) | x > m = Node (Leaf l) m (insert x r)
| otherwise = Node (insert x l) m (Leaf r)
Allerdings, wenn ich diese laufen bekomme ich folgende Fehlermeldung:
nicht Typ Könnte übereinstimmen erwartet ‚a‘ (ein starres Variable) gegen abgeleitete Art 'Baum a' 'a' ist durch die Typ Unterschrift für 'einfügen' bei Main.hs: 11: 10 Im ersten Argument von 'Leaf', nämlich 'l' In der ersten Argument von 'Knoten', nämlich '(Blatt 1)' In dem Ausdruck: Knoten (Blatt l) m (Einfügen xr)
Ich nehme an, es ist etwas mit Typen zu tun, aber ich kann nicht sehen, wo ich irgendwelche Typen, die nicht da sein sollte, gesetzt habe.
"Gib einem Mann einen Fisch und du fütterst ihn für einen Tag; lehre einen Mann zu fischen und du ernährst ihn ein Leben lang". Gute Antwort! – yairchu