hola,
observa que los árboles de los que hablamos son binarios, aún
cuando puedan tener alguna rama de largo infinito. es decir,
cada nodo interior tiene exactamente dos hijos inmediatos,
sin importar si tiene infinitos descendientes o no. luego, la
cantidad de hojas que pueden encontrarse a profundidad p están
acotadas por 2^p.
supongamos que el árbol t tiene un único nodo (Leaf 1) a profundidad 10.
tenemos que mif' t 10 = [1], y que mif' t k = [] si k 10. el
dropwhile descartará los primeros 10 resultados (porque son la lista vacía),
y devolverá [1]:xs. el head toma [1], y descarta xs. y con eso,
descarta todas las infinitas listas vacías que se computarían, si no
tuviéramos lazy evaluation.
el proceso termina no porque el árbol sea finito (que no tiene por qué serlo)
sino porque head se contenta con unn fragmento finito de ese cómputo.
cualqueir cosa reconaulta
luisl.