Both sides previous revisionPrevious revisionNext revision | Previous revision |
teaching:cc4101:tareas:2025-1:tarea2 [2025/05/11 15:59] – [Estrategias de evaluación] msegur | teaching:cc4101:tareas:2025-1:tarea2 [2025/06/08 01:34] (current) – [Partes] dibanez |
---|
====== Tarea 2 (Entrega: TBD) ====== | ====== Tarea 2 (Entrega: 8 de Junio) ====== |
| |
==== Estrategias de evaluación ==== | ==== Estrategias de evaluación ==== |
| |
El objetivo final de esta tarea es extender un lenguaje, llamado SL (Surface Language), que adopta evaluación temprana por defecto, para que se pueda especificar la estrategia de evaluación de cada argumento si es necesario, ya sea con semántica //call-by-need// o //call-by-name//, usando anotaciones de tipos. SL es un lenguaje de más alto nivel, con tipos estáticos y ''with'', que está implementado mediante una transformación a un lenguaje de (un poco) más bajo nivel CL (Core Language), que no tiene ni tipos ni ''with''. | El objetivo final de esta tarea es extender un lenguaje, llamado SL (Surface Language), que adopta evaluación temprana por defecto, para que se pueda especificar la estrategia de evaluación de cada argumento si es necesario, ya sea con semántica //call-by-need// o //call-by-name//, usando anotaciones de tipos. SL es un lenguaje de más alto nivel, con tipos estáticos y ''with'', que está implementado mediante una transformación a un lenguaje de (un poco) más bajo nivel CL (Core Language), que no tiene ni tipos ni ''with''. |
La idea general de la implementación es de usar una //transformación// de programas SL a programas CL para realizar las distintas estrategias de evaluación. Note que está técnica es muy similar a la manera en la cual Scala implementa los features de by-name y by-need. | La idea general de la implementación es de usar una //transformación// de programas SL a programas CL para realizar las distintas estrategias de evaluación. Note que esta técnica es muy similar a la manera en la cual Scala implementa los features de by-name y by-need. |
| |
---- | ---- |
- [[teaching:cc4101:tareas:2025-1:tarea2:parte2|Memoización (2 ptos)]] En la segunda parte, extenderán CL con funciones //memoizadas//, es decir, funciones que "recuerdan" los resultados que produjeron para los argumentos que ya recibieron en el pasado. Esas funciones especiales serán útiles para resolver la parte 3. | - [[teaching:cc4101:tareas:2025-1:tarea2:parte2|Memoización (2 ptos)]] En la segunda parte, extenderán CL con funciones //memoizadas//, es decir, funciones que "recuerdan" los resultados que produjeron para los argumentos que ya recibieron en el pasado. Esas funciones especiales serán útiles para resolver la parte 3. |
- [[teaching:cc4101:tareas:2025-1:tarea2:parte3|Estrategias de evaluación (2 ptos)]] La tercera parte consiste en agregar modificadores de tipos a SL para especificar la estrategia de evaluación a usar, y realizar estos modificadores mediante una modificación de la transformación de programas SL a CL. | - [[teaching:cc4101:tareas:2025-1:tarea2:parte3|Estrategias de evaluación (2 ptos)]] La tercera parte consiste en agregar modificadores de tipos a SL para especificar la estrategia de evaluación a usar, y realizar estos modificadores mediante una modificación de la transformación de programas SL a CL. |
| - [Opcional] Estrategias de evaluación parte 2. No estará disponible en esta iteración del curso. |
| |
| |