Ich versuche eine Funktion in Haskell zu schreiben, die eine Liste von ganzen Zahlen aufnehmen wird und wenn m
ein Element dieser Liste ist, wird die Liste ohne m
gedruckt, andernfalls wird nur die Liste gedruckt. Ich habe geschriebenLösche Integer aus Liste
rmvFirst :: Int -> [Int] -> [Int]
rmvFirst m [] = error "Empty"
rmvFirst m [x] | x == m = error "Empty Set"
rmvFirst m (x:xs) | x == m = (xs)
rmvFirst m (x:xs) | otherwise = rmvFirst m (xs)
Wenn ich 3 [1..5] eingeben, gibt es [4..5] aus. Aber ich möchte {1,2,4,5}. Das Buch, das ich nur benutze hat min
und max
definiert.
In welcher Sprache? –
Warum ist eine leere Eingabe oder ein leeres Ergebnis ein Fehler? Das ist ziemlich überraschend! Was willst du auch machen, wenn mehrere Kopien von 'm' in der Liste sind? – dfeuer
@dfeuer einen Fehler auf leere Eingabe Having könnte in manchen Kontexten sinnvoll sein. Das heißt, Sie möchten sicher sein, dass Ihre Funktion wirklich ein Element entfernt - wenn dies nicht der Fall ist, gibt es irgendwo anders einen Fehler, also möchten wir das jetzt vielleicht melden. Auf der anderen Seite ist der Fehler bei der leeren Ausgabe _really_ komisch, ich kann keine Rechtfertigung für diese Wahl finden. – chi