0 Daumen
127 Aufrufe

Hallo!

Ich möchte eine einzeilige Funktion "argmax" mit fold erstellen, bei der ich eine anonyme/lambda-Funktion und eine Liste eingebe. Dann wende ich die Funktion auf die Liste an und erhalte eine neue Liste basierend auf der Funktion. Nun ermittle ich den Maximalwert der zweiten Liste und gebe das Element aus der ersten Liste zurück, das bei der Anwendung der Funktion den Maximalwert erzeugt hat.


Das sollte so aussehen:


Ausgabe: argmax (\x -> mod x 5) [1,4,7]
Die zweite Liste wäre dann: [1,4,2]

Das maximale Element der zweiten Liste ist 4, also sollte es 4 aus der ersten Liste zurückgeben, denn mod 4 5 ist 4.


Die Ausgabe sollte also lauten: 4


Derzeit habe ich dies:

argmax :: (Ord a) => a -> [a] -> a
argmax f xs = foldr max f xs


aber es funktioniert nicht für anonyme Funktionen


Ich bekomme folgenden error:
No instance for (Show (Integer -> Integer))


Ich habe versucht die Typsignatur zu ändern, aber es hat nicht geholfen.


Wenn jemand mir helfen könnte, wäre ich sehr dankbar.


Lg

Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community