Hola Agustin,
Hay un problema con la aplicación de `flip`. El tipo de la funcion es:
flip :: (a -> b -> c) -> b -> a -> c
pero en
flip(mod 2 x)
Lo estas aplicando a una invocacion saturada de "mod". "mod 2 x" es un valor reducido, no una función, y lo que precisas tanto para el flip como para el "map" que viene despues son funciones. Observa que esto sí funciona:
(flip mod 2) x
Por otro lado, al matchear la lista como (x:xs) estas evitando el caso de la lista vacía, así que sería mejor matchear sólo "xs". Hasta ahí tendriamos:
cantElemPares xs = length(filter (==0) map (flip mod 2) xs)
Acá lo único que falta es forzar la aplicación en el lugar correcto ("$") para que los tipos coincidan. Después incluso se podrían eliminar los parentesis de "lenght" y sacar el parametro "xs" usando la composicion de funciones (eta reducción).
Saludos!