Composición (.)

Composición (.)

de Juan Carlos Sosa Gómez -
Número de respuestas: 2

Hola, 

Consulta, porque al hacer length . head [[1],[2]] me da error?

error: Couldn't match expected type ‘a -> t0 a0’
with actual type ‘[Integer]’

En respuesta a Juan Carlos Sosa Gómez

Re: Composición (.)

de Diego Javier Rodriguez Uranga -
Parece que está haciendo primero `head [[1],[2]]`, y luego la función (.) a length y el resultado de eso, entonces te dice que el segundo argumento no es válido porque no es una función (es una lista). Si hacés `(length . head) [[1],[2]]` funciona bien.
En respuesta a Diego Javier Rodriguez Uranga

Re: Composición (.)

de Juan Pablo García Garland -
Efectivamente. La aplicación tiene la mayor precedencia posible, en particular mayor a la del operador `(.)'

Por lo tanto `length . head [[1],[2]]' es equivalente a escribir ` length . (head [[1],[2]])' y eso no tipa (al aplicar head obtenemos una lista, que no es una función, entonces no se puede componer).