2016 - segunda instancia - Ej 5

2016 - segunda instancia - Ej 5

de Ignacio Javier Da Cunha Cuitiño -
Número de respuestas: 2

Buenas, no termino de entender este ejercicio:

Dadas las siguientes definiciones: 

data Tree = Empty | Node Tree Tree 

data Nat = Z | S Nat 

instance Eq Nat where 

Z == Z = True 

S n == S m = n == m 

_== _ = False


eqzz t t' = zig t == zag t' 


zig Empty = Z 

zig (Node l r ) = S (zag l) 


zag Empty = Z 

zag (Node l r ) = S (zig r ) 


t1 = Node (Node Empty Empty) (Node t1 Empty) 

t2 = Node t2 (Node t2 Empty) 

t3 = Node t3 Empty 


¿Cuál de las siguientes afirmaciones es correcta? 

(a) eqzz t3 t1 diverge 

(b) eqzz t1 t2 diverge 

(c) eqzz t2 t2 diverge 

(d) eqzz t1 t1 diverge

Respuesta: c)


Estoy de acuerdo que (eqzz t2 t2) diverge. Pero según entiendo (zag t1) también diverge por lo tanto las opciones a) y d) serian correctas también... ¿Por qué (zag t1) no diverge?


Saludos y gracias.

En respuesta a Ignacio Javier Da Cunha Cuitiño

Re: 2016 - segunda instancia - Ej 5

de Marcos Viera - InCo -

Miremos por ejemplo a)

(zig t3) retorna (S (S Z))

(zag t1) retorna (S (S (S ... infinitos

pero es suficiente llegar a (S (S (S _))) para que (==) de False.