Practico 4 ej 5-a

Practico 4 ej 5-a

de Santiago Guerra Boschiero -
Número de respuestas: 1

Buenas, no termino de entender la definición de la función que se pide en la letra

mapHT :: (a → b) → (HTree a → HTree b)

No debería ser algo de la forma mapHT :: (a → b) → HTree a → HTree b ? Ya que de la forma que se plantea es como que mapHT devuelve una función de HTree en HTree y no un HTree que es la idea del map. 

Gracias, saludos


En respuesta a Santiago Guerra Boschiero

Re: Practico 4 ej 5-a

de Marcos Viera - InCo -
Hola,

Los dos tipos son el mismo, porque la flecha asocia a la derecha, entonces es lo mismo poner:
mapHT :: (a → b) → (HTree a → HTree b)
que:
mapHT :: (a → b) → HTree a → HTree b

y su lectura puede ser tanto como que toma un función y un HTree y retorna un HTree, como que toma una función y retorna una función de HTree en HTree.
Lo mismo pasa con el map, donde también podemos decir que el tipo es:
map :: (a → b) → ([a] → [b])

Para entender mejor el concepto, te recomiendo repasar en el teórico de "Polimorfismo, Sobrecarga y Alto Orden" la parte de "Funciones Currificadas".

saludos