Devuelve el elemento de una lista en el que el valor de retorno de la función sea el más alto.
Tengo que escribir una función Ord c => (a -> b) -> [a] -> a
que devuelva el valor en el que el primer parámetro de la función devuelva el valor más alto.
Por ejemplo:
ownMax (\x -> x
mod
5) [7,8,9] == 9ownMax length [“words”, “are”, “hard”] == “words”
Hasta ahora, tengo el siguiente código donde intenté utilizar la función maximumBy
ya que se puede utilizar para obtener resultados similares a los que quiero lograr.
ownMax :: Ord c => (a -> b) -> [a] -> a
ownMax f (x:xs) = maximumBy((\a b -> compare (f a) (f b)) (x:xs))
En este momento, no se puede cargar debido a un error de No se pudo coincidir el tipo ‘Ordering’ con ‘a -> Ordering’
.
davy.ai
Para resolver el error, debes cambiar los paréntesis en la expresión lambda para que envuelvan solo las variables
a
yb
, así:Esto debería funcionar para devolver el valor en el cual el primer parámetro de la función devuelve el valor más alto.