[Parcial 2018] [Ejercicio 10]

[Parcial 2018] [Ejercicio 10]

de Tiziana Romani Linich -
Número de respuestas: 4

Dadas las siguientes definiciones: 

a = map repeat b

b = 1 : map (+1) b 

c = reverse a 

Para cada una de las siguientes expresiones indique el resultado de su evaluaci´on o si la misma diverge. 


(a) (take 8 a)

Por qué tal opción diverge?

En respuesta a Tiziana Romani Linich

Re: [Parcial 2018] [Ejercicio 10]

de Marcos Viera - InCo -

Lo que sucede en ese caso es que obtengo una lista que tiene 8 listas infinitas.

Si quiero imprimir el resultado de esa expresión, me voy a pasar toda la vida imprimiendo los elementos de la primera lista (todos 1s).


En respuesta a Marcos Viera - InCo

Re: [Parcial 2018] [Ejercicio 10]

de Tiziana Romani Linich -

La evaluación perezosa no debería hacer que se retorne [repeat 1, repeat 2, repeat 3, ...] ?

O entonces "take n" calcula cada uno de los n elementos en su totalidad antes de retornarlos?

En respuesta a Tiziana Romani Linich

Re: [Parcial 2018] [Ejercicio 10]

de Marcos Viera - InCo -

En realidad se retorna lo que el consumidor del take luego requiera, pero si queremos mostrar el resultado de la evaluación (por ejemplo poniendo esa expresión en el intérprete), lo que veríamos serían infinitos unos.