2 Stimmen

Anwenden einer Funktion mit mehreren Eingängen mit Map? (Haskell)

Guten Tag, Leute,

Ich versuche gerade, eine kleine Hausaufgabe zu erledigen, an der ich arbeite, und habe ein Problem, bei dem ich versuche, map auf eine Funktion anzuwenden, die mehrere Eingaben akzeptiert.

In dem von mir verwendeten Fall processList f (x:xs) = map accelerateList f xs x xs

processList erhält einen Gleitkommawert (f) und eine Liste, die es in eine andere Liste sortiert

Accelerate List nimmt einen Gleitkommawert (f), eine Liste und ein Listenobjekt, über das es ein anderes Listenobjekt zurückgibt

Ich weiß, dass mein Accelerate List-Code korrekt ist, aber ich kann beim besten Willen die Syntax für diesen Code nicht zum Laufen bringen:

processList :: Float -> [Object] -> [Object]
accelerate f [] = []
accelerate f [x] = [(accelerateForce f x x)]
accelerate f (x:xs) = map accelerateList f xs x xs

Irgendwelche Ideen? Ich zerbreche mir jetzt seit etwa 3 Stunden den Kopf. Ich weiß, es ist etwas wirklich einfach.

5voto

Jakob Punkte 23652

Als erstes werden Sie hier wahrscheinlich einige Klammern verwenden wollen:

map accelerateList f xs x xs

Die Funktion map benötigt genau zwei Argumente (nicht fünf), also sollten Sie zum Beispiel so vorgehen:

map (accelerateList f xs x) xs

Andererseits passt das aber nicht zu Ihren Funktionssignaturen. Das Problem ist wahrscheinlich, dass Sie Ihre Lösung nicht gut genug strukturiert haben. Das ist vielleicht eine andere Frage, aber eine Erklärung, was Sie mit der Accelerate-Funktion (oder welcher Funktion auch immer) erreichen wollen, wäre sicherlich hilfreich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X