Ich bin neu in Haskell und ich kam in eine Sache, die ich scheinen kann around.So Ich habe diese Funktion zu kommen:Was bedeutet myFunction (x: y: xs) bedeuten in Haskell
merge :: [Int] -> [Int]
merge xs = merged ++ padding
where padding = replicate (length xs - length merged) 0
merged = combine (filter (/= 0) xs)
combine (x:y:xs) | x == y = x * 2 : combine xs
| otherwise = x : combine (y:xs)
combine x = x
Das Problem irgendwie die Spitze meiner Liste ist, dass ich nicht ganz begreifen kann, was meine Forschung verbinden und fand does.I tat,
myFunction(x:xs) ...
stellt dar, dass „x“ ist, und ich kann damit Dinge tun, nicht wahr? Does das bedeutet, dass in myFunction(x:y:xs) ...
"x" ist das letzte Element und "y" wäre das zweite bis zum letzten Element in xs? I Ist das richtig, oder liege ich furchtbar falsch? Und was ist mit dem ":" nach "| x == y = x * 2 ", ich habe gelernt, dass in Haskell": "bedeutet, einen Wert an eine Liste anzuhängen, aber in diesem Kontext kann ich wirklich nicht ganz verstehen, was es tut ... Einige Hilfe würde sehr geschätzt werden.
Also wenn ich etwas wie "kombinieren [2,2,4,8]" haben würde, wäre das Ergebnis [4,4,8], habe ich das richtig gemacht? –
Ja, genau das! –
Yey, vielen Dank für deine Antwort, das hat mir wirklich geholfen, Haskell ist gnadenlos, zumindest am Anfang –