[Ejercicio 3 - 2022 - 2a instancia - versión b]

[Ejercicio 3 - 2022 - 2a instancia - versión b]

de Gustavo Chalela Nuñez -
Número de respuestas: 2

Hola, quería consultar sobre este ejercicio:

Dada la siguiente deinición:

twice f = f o f

¿Cuál de las siguientes opciones NO es correcta?:

(a) (twice (twice (+1))) está mal tipada

(b) (twice fst) está mal tipada

(c) El tipo más general de (twice twice) es (a -> a) -> a -> a

(d) El tipo más general de (twice o twice) es (a -> a) -> a -> a

La respuesta dice que es la a)
El tema es que lo paso por el ghci y el a compila perfecto, el que no compila es el b)
Entonces me queda la duda de qué significa que esté mal tipada... Yo le miro el tipo a la a) y me da Num a => a->a, no? (supongo que está bien porque el tipo general sería (a->a)->a->a, lo del paréntesis es la función -que aquí ya está pasada, es el (+1), faltaría el parámetro al cual aplicarle todo y obvio, el resultado: por eso a->a).
Alguién me ayuda a entender esto?
Muchas gracias

Gustavo Chalela


En respuesta a Gustavo Chalela Nuñez

Re: [Ejercicio 3 - 2022 - 2a instancia - versión b]

de Santiago Agustín Silveira Pérez -
Claro. Pero el enunciado pide marcar la INCORRECTA. Justamente la a) esta bien tipada. Por eso es la incorrecta. La b) esta mal tipada, por lo que la afirmación es correcta.