Buenas, no entiendo porqué la parte h (igual a la parte a de la versión 2) da como resultado 4.
(length . take 4 . tail . repeat . recorre $ genera)
La función recorre genera una lista infinita empezando desde el medio, por lo tanto al usarla de parámetro para otro función no debería diverger?
Además, la función repeat es de tipo: a -> [a], se le puede pasar como parámetro la lista que devuelve recorre?
Otra duda del ejercicio en general: que devolvería la segunda componente de generaAux n? Devuelve n? No veo la relación entre el n que se le pasa de parámetro y el n devuelve. No entiendo como se genera ese valor de retorno.