Hey, also ich lernte Haskell in der Klasse und mir wurde das Problem gegeben, alle Instanzen von etwas aus einer Liste zu entfernen. Das ist mein Ziel, aber ich stoße auf diesen Fehler, dem ich nicht folgen kann.Haskell: Konnte den erwarteten Typ nicht mit dem tatsächlichen Typ übereinstimmen
--delete element from list
removeElement :: [a] -> [a]
removeElement x [] = []
removeElement x aList =
if (head aList) == x
then removeElement x (tail aList)
else aList
Der Fehler, den ich erhalten, ist dies:
Couldn't match expected type `[[a]] -> [[a]]'
with actual type `[a]'
Relevant bindings include
removeElement :: [a] -> [a] (bound at hwmk3.hs:8:1)
The equation(s) for `removeElement' have two arguments,
but its type `[a] -> [a]' has only one
Ich vermute, dass die Syntax falsch ist, aber ich bin nicht sicher, wie es zu beheben. Danke für Ihre Hilfe.
Die Signatur sagt, dass Ihre Funktion ein Argument hat, und die Gleichung sagt, es hat zwei. Wohlgemerkt, das * kann * in Haskell Sinn haben, nur wahrscheinlich nicht, was du hier brauchst. –