Ich bin neu in Haskell und mache ein paar einfache Übungen. Für diese Übung schreibe ich eine Funktion, die überprüft, ob eine Liste eine Untermenge einer anderen Liste mit Rekursion ist.Sehr einfacher Haskell-Code funktioniert nicht, "Variable nicht im Bereich"
Hier ist der Code:
subset [] xs = True
subset (x:xs) ys = if elem x ys == False then False
else subset (tail xs) (delete x ys)
ich die folgende Fehlermeldung erhalten:
C:\Functioneel programmeren\week4.hs:9:43: error:
Variable not in scope: delete :: t1 -> t t1 -> t t1
Was bedeutet das auch?
Dieses Programm funktioniert nur, wenn ich "(delete x ys)" in "ys" ändere, aber dann tut es nicht, was es tun soll.
Jede Hilfe wäre großartig, danke im Voraus.
Wo ist 'löschen' definiert? – Polygnome
Ich hatte den Eindruck, dass das eine eingebaute Funktion in Haskell war: http://hackage.haskell.org/package/base-4.9.1.0/docs/Data-List.html#v:delete – Meurth
Übrigens , Ihr 'if' kann in einer besser lesbaren Form als 'elem x ys && subset ...' umgeschrieben werden. Normalerweise neigen wir dazu, '== False' und' if..then False' in Haskell zu vermeiden. Auch 'tail xs' sieht falsch aus, bist du sicher, dass du' xs' nicht willst? – chi