UTNianos

Versión completa: Ayuda TP Funcional
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Tengo la siguiente consigna:

3) Dado 3 deportistas que participan en la competencia, conocer el nombre del deportista más corajudo es decir cuyo nivel de coraje sea máximo. Si dos personas se tienen el mismo nivel de coraje, se debe mostrar el nombre del que se inscribió primero. El orden en que se anotan es el orden de los parámetros.

> masCorajudo (Deportista "sara" 18 ("parkour", 0) 8) (Deportista "emilio" 21 ("bicicleta", 2) 8) (Deportista "judith" 20 ("rollers", 8) 7)
“sara”

Tambien tengo armado del punto 2 lo siguiente:


nivelCoraje (Deportista _ _ (deporte, _) _) | deporte == "bicicleta" = 80
| deporte == "rollers" = 100-15
| deporte == "skate" = 100-10
| otherwise = 100-5


La cuestion es que yo ahora estaba armando la función de a poco, pero al tirar


masCorajudo persona1 persona2 persona3 = nivelCoraje.persona1


Me tira el siguiente error:


*Main> masCorajudo (Deportista "sara" 18 ("parkour", 0) 8) (Deportista "emilio" 21 ("bicicleta", 2) 8) (Deportista "judith" 20 ("rollers", 8) 7)

<interactive>:76:14:
Couldn't match expected type ‘a -> Persona’
with actual type ‘Persona’
Relevant bindings include
it :: a -> c (bound at <interactive>:76:1)
Possible cause: ‘Deportista’ is applied to too many arguments
In the first argument of ‘masCorajudo’, namely
‘(Deportista "sara" 18 ("parkour", 0) 8)’
In the expression:
masCorajudo
(Deportista "sara" 18 ("parkour", 0) 8)
(Deportista "emilio" 21 ("bicicleta", 2) 8)
(Deportista "judith" 20 ("rollers", 8) 7)


Me parece que el problema es con los paréntesis... Necesito ayuda.
Estás intentando componer una función con algo que no es una función, para aplicar no necesitás el punto, directamente escribí nivelCoraje persona1
URLs de referencia