Duda de la clase de hoy

Duda de la clase de hoy

de Damian Ferencz Cohn -
Número de respuestas: 2

Segun entiendo, la motivacion para las tecnicas de fusion surgen de la necesidad de no malgastar espacio y/o tiempo en llenar estructuras intermedias en una computacion que se compone de varias etapas.

En el caso de trabajar con el tipo inductivo Lista, es esto necesario? Por como es la evaluacion lazy, las funciones que componen el pipe van solicitando informacion de input solo cuando es necesario (se solicita de izquierda a derecha), es decir, de a un caracter a la vez, por lo que se gasta solo O(1) de espacio.

Si entiendo que es necesario cuando se trabaja con arreglos inmutables, por ejemplo, donde se generan estructuras intermedias en cada paso del pipe (si se hace un cambio en cada etapa, hay que crear un arreglo nuevo que contemple ese cambio).

Es como estoy diciendo? O hay algo para corregir?

Saludos

Damian

En respuesta a Damian Ferencz Cohn

Re: Duda de la clase de hoy

de Marcos Viera - InCo -

Pero cada nodo cons tiene que ser alojado en memoria, aunque quede inmediatamente disponible para que el garbage collector lo libere.


En respuesta a Marcos Viera - InCo

Re: Duda de la clase de hoy

de Damian Ferencz Cohn -

Creo que entiendo.

Por ejemplo, si hacemos f :: [a] -> [a], f =(filter True).(filter True).(filter True),

entonces al realizar la operacion f (1:[]) = 1:[],  se estarian construyendo dos (:) intermedios no?