hola diego,
Creo que es más fácil de entender si considerás la siguiente forma de construír
la lista de los pares menores que diez.
[ r | z <- [1..10], even z]
qué pasaría si la lista considerada no fuera [1..10] sino la lista vacía?
[ r | z <- [], even z]
deberíamos devolver la lista de todos los pares que están en la lista vacía;
eso no es un error, simplemente es la lista vacía. por qué even z no da error, viendo que z no puede haber recibido un valor? simplemente porque nunca se consideró even z, ya que no había nada que considerar.
de igual forma, nunca se consideró la r <- [1..z], y por lo tanto nunca hubo ningún r que poner en la lista a devolver.
luis