Ich möchte eine Funktion erstellen, machen wir es altHead nennen, die zwei Variablen nimmt und gibt eine Variable, so dass:Passing zwei Argumente von unterschiedlichen Typen
a -> [a] -> a
ich es so nennen wollen:
altHead 3 [1,2,3,4]
Was es tun soll, ist die erste Variable und die Liste zu sehen. Wenn die Liste leer ist, geben Sie den Wert der ersten Variablen zurück. Andernfalls geben Sie die Liste zurück.
In diesem Fall habe ich den folgenden Code geschrieben.
altHead :: a -> [a] -> a
altHead (x:xs) = if null[xs] then [x] else [xs]
Allerdings glaube ich, dass x: xs nur durch die Liste schaut.
Ich bin ein bisschen fest, wie man das ändert, so dass es auch auf den ersten Wert schaut, und wie man den ersten Wert in die Funktion einbezieht.
Hinweis: Benutzen Sie nicht if/then/else überhaupt. Mustervergleich ist alles was Sie brauchen. – Carl
@Carl Hmmm so, altHead [] = x //// altHead [a] = [a]? –
'(x: xs)' bindet nicht zwei Argumente, es bindet den Kopf und das Ende eines * einzigen * Arguments, das eine Liste sein muss. – Wyzard