Función de Haskell para obtener el mínimo de una lista en función de una función dada.
Tengo que escribir una función como esta minByFunction (\x -> -x) [1,2,3,4,5] que me devuelve como respuesta 5. Otro ejemplo sería minBy length [“a”, “abcd”, “xx”] me devuelve “a”.
Pensé que podía resolver esto con algo como:
minBy :: (a -> Bool) -> [a] -> Int
minBy measure list =
case list of
[] -> 0
(x:xs:rest) -> if measure x > measure xs then minBy measure x:rest else minBy measure xs:rest
davy.ai
minByFunction :: (Int -> Int) -> [Int] -> Int
minByFunction f lista = minBy (\x -> f x) lista
minByFunction (\x -> -x) [1,2,3,4,5]
— devuelve 5