Buenas, tengo la siguiente consulta sobre los ejercicios de repaso de evaluacion perezosa.
Por ejemplo en:
A)
data Arbol a = Vacio | Nodo (Arbol a) a (Arbol a)
genera = fst $ generaAux 0
where generaAux n = let (l,n' ) = generaAux (n+1)
(r,n'') = generaAux n'
in (Nodo l n r, n'')
recorreL (Nodo l x _) = x : recorreL l
recorreL Vacio = []
Se debe evaluar `take 5 . tail . recorreL $ genera`B)
data Arbol a = Vacio | Nodo (Arbol a) a (Arbol a)
genera = fst $ generaAux 0
where generaAux n = let (l,n' ) = generaAux (n+1)
(r,n'') = generaAux n'
in (Nodo l n r, n'')
recorreR (Nodo _ x r) = x : recorreR r
recorreR Vacio = []
Se debe evaluar `take 5 . tail . recorreR $ genera`No me queda claro por que B) diverge y A) no. La unica diferencia que veo es que en `Nodo l n r`, uno recorre por l y otro por r (en las funciones recorreL y recorreR respectivamente). Pero no me queda claro por qué esto causa que uno diverga y el otro no.
Muchas gracias