Differences
This shows you the differences between two versions of the page.
| |
| teaching:cc4101:tareas:2026-1:tarea2:parte2 [2026/05/11 00:24] – created bduarte | teaching:cc4101:tareas:2026-1:tarea2:parte2 [2026/05/11 02:23] (current) – [Parte 2. Memoización (2 ptos.)] bduarte |
|---|
| En esta sección van a extender el lenguaje CL con un mecanismo de [[https://es.wikipedia.org/wiki/Memoizaci%C3%B3n|memoización]]. La memoización es una técnica de optimización que permite evaluar más rápidamente llamadas a funciones. Una función memoizada tiene asociada una estructura (p.ej. tabla de hash) donde se van guardando los argumentos con que se ha aplicado la función y el resultado de evaluar la función con esos argumentos. Luego, si se realiza una nueva aplicación con el mismo argumento, basta con acceder a la memoria para obtener el valor computado anteriormente, sin tener que evaluar todo el cuerpo de la función de nuevo. | En esta sección van a extender el lenguaje CL con un mecanismo de [[https://es.wikipedia.org/wiki/Memoizaci%C3%B3n|memoización]]. La memoización es una técnica de optimización que permite evaluar más rápidamente llamadas a funciones. Una función memoizada tiene asociada una estructura (p.ej. tabla de hash) donde se van guardando los argumentos con que se ha aplicado la función y el resultado de evaluar la función con esos argumentos. Luego, si se realiza una nueva aplicación con el mismo argumento, basta con acceder a la memoria para obtener el valor computado anteriormente, sin tener que evaluar todo el cuerpo de la función de nuevo. |
| |
| * (0.4 ptos) Extienda la sintaxis del lenguaje (y por ende, el parser) con la expresión ''{mfun {<id>} <CL>}'' que permite definir una función anónima memoizada. | * (0.4 ptos) Extienda la sintaxis del lenguaje (y por ende, el parser) con la expresión ''{mfun {<sym>} <CL>}'' que permite definir una función anónima memoizada. |
| * (0.3 ptos) Extienda el tipo de dato de los valores con un nuevo constructor ''mclosV'' para representar una función memoizada en tiempo de ejecución. La única diferencia con clausuras tradicionales es la presencia de una tabla de memoización. | * (0.3 ptos) Extienda el tipo de dato de los valores con un nuevo constructor ''mclosV'' para representar una función memoizada en tiempo de ejecución. La única diferencia con clausuras tradicionales es la presencia de una tabla de memoización. |
| |