Pregunta 6 Auto evaluación - Definiciones

Pregunta 6 Auto evaluación - Definiciones

de Rodrigo Alain De La Vega Rodriguez -
Número de respuestas: 1

Buenas al tratar de hacer este ejercicio no tenia ni idea como se aplica la siguiente parte del código: (map filter ps) donde ps = [const True, (< 2), (> 3)]

La lista que pasa el ejercicio es [1,2,3,4] supongo que el map se va a aplicar primero, aplicando filter ps a cada elemento de la lista pero si pasa esto entonces tendría el siguiente resultado parcial:
[filter ps 1, filter ps 2, filter ps 3, filter ps 4] y no entiendo para que sirve el filter con esa lista de predicados en este caso, ni siquiera veo como se aplicaría.

Siempre supuse que al resultado de lo antes dicho recién ahí se le aplicaría el foldr. Capaz que estoy equivocado y me pueden corregir.
Gracias!

Adjunto imagene6

En respuesta a Rodrigo Alain De La Vega Rodriguez

Re: Pregunta 6 Auto evaluación - Definiciones

de Marcos Viera - InCo -
La expresión (map filter ps) aplica filter a cada elemento de la lista ps, por lo que te quedaría:
[ filter (const True,) filter (< 2), filter (> 3) ]

El comportamiento que pusiste vos, se daría si tuviéramos (map (filter ps)), pero como la aplicación asocia a la izquierda, entonces en realidad tenemos ((map filter) ps).