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