De la expresión `foldr (.) id (map filter ps)` ya podés sacar que:
- `f = (.)`
- `e = id`
- `(map filter ps)` es la lista que se pasa como entrada al `foldr`.
Una dificultad de este ejercicio es hacerse una idea de qué lista es `map filter ps`.
Podemos ayudarnos con los tipos de `map` y `filter`:
- `map :: (a -> b) -> [a] -> [b]`
- `filter :: (a -> Bool) -> [a] -> [a]`
¿Cuál es el tipo de `map filter`? Notar que se está usando `filter` como la función que se pasa como primer argumento de `map`.
Con eso podés inferir que tipo tiene que tener `ps`. Y con eso podés deducir el tipo de `raro`.
¿Qué tipo tiene `raro ps`?