Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
teaching:cc4101:tareas:2025-1:tarea2 [2025/05/11 20:43] – [Partes] msegurteaching:cc4101:tareas:2025-1:tarea2 [2025/06/08 01:34] (current) – [Partes] dibanez
Line 1: Line 1:
-====== Tarea 2 (Entrega: TBD) ======+====== Tarea 2 (Entrega: 8 de Junio) ======
  
 ==== Estrategias de evaluación ==== ==== Estrategias de evaluación ====
Line 6: Line 6:
  
 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.
  
 ---- ----
Line 20: Line 20:
     - [[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.
-    - [[teaching:cc4101:tareas:2025-1:tarea2:parte4|[Opcional] Estrategias de evaluación parte 2 (1 punto de bonus)]] Esta parte opcional consiste en explorar algunos problemas que presenta la implementación realizada en la parte anterior, así como algunas soluciones.+    - [Opcional] Estrategias de evaluación parte 2. No estará disponible en esta iteración del curso.