Buenas estoy tratando de hacer esta pregunta razonando como el call by need trabajaría pero me quede trancado ya que no logro interpretar como se logra aplicar el filter con todas esas funciones compuestas y con filters adentro.
Lo que tengo hecho es:
--raro [const True,(<2),(>3)] [1, 2, 3, 4]
-- foldr (.) id (map filter [const True,(<2),(>3)]) [1, 2, 3, 4]
-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- foldr (.) id [filter (const True), filter (<2), filter (>3)] [1, 2, 3, 4]
-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- filter ( (const True) (.) ( filter (<2) (.) ( filter (>3) (.) id ) ) ) [1, 2, 3, 4]
El resultado lo se porque lo puse en el ghci no porque haya logrado resolverlo.
Lo que me entrevera es pensar como se aplica este filter a cada elemento de la lista ya que para mi quedaría:
[ (const True) (.) ( filter (<2) (.) ( filter (>3) (.) id ) ) 1, (const True) (.) ( filter (<2) (.) ( filter (>3) (.) id ) ) 2, 3, 4] y asi sucesivamente,
[ (const True) (.) ( filter (<2) (.) ( filter (>3) (.) id ) ) 1, (const True) (.) ( filter (<2) (.) ( filter (>3) (.) id ) ) 2, 3, 4] y asi sucesivamente,
pero claro; lo que me pasa es que luego me quedan filters aplicado a elementos y no a listas.
Que estoy haciendo mal?
Gracias!