Buenas,
No me queda claro porque la opcion foo [ ] "hola" al evaluarlo no es "hola", si foo [] = id y al evaluar id "hola"en Prelud me da "hola"
Y no me queda claro que la opcion que dieron como correcta (bar [1, 2, −4, 3, −8]) = 5 si lo sea.
Si vemos la definicion de bar xs = foo xs 0, entiendo que foo [1, 2, −4, 3, −8] si retorna la composicion de funciones id . (+1) . (+1) . (+1) . (+1) . (+1) pero para poder aplicar esta composicion a 0 entiendo que bar deberia ser:
bar xs = (foo xs) 0 o bar xs = foo xs $ 0 o sea que para aplicar la composicion de funciones a 0 tienen que estar envueltas en () o utilizando la funcion $ para aplicar la funcion a el argumento 0.
Porque hacer : id . (+1) . (+1) . (+1) . (+1) . (+1) 0 el ultimo (+1) no estaria tomando el 0 como argumento y eso no retorna un valor en vez de la funcion que tiene que tomar la composicion? Esto no seria un error de ejecucion?
Espero que se entienda mi duda.
Saludos