Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
teaching:cc4101:tareas:2025-1:tarea2:parte3 [2025/05/11 15:15] – created msegur | teaching:cc4101:tareas:2025-1:tarea2:parte3 [2025/05/11 22:38] (current) – [3.3 Transformación a CL] msegur | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | [[teaching: | + | [[teaching: |
===== Parte 3. Estrategias de evaluación (2 ptos.) ===== | ===== Parte 3. Estrategias de evaluación (2 ptos.) ===== | ||
Line 6: | Line 6: | ||
La extensión de SL consiste en agregar // | La extensión de SL consiste en agregar // | ||
+ | |||
+ | Nota: '' | ||
<code scheme> | <code scheme> | ||
;; Una función de tipo Num -> Num significa que se aplicará con evaluación temprana. | ;; Una función de tipo Num -> Num significa que se aplicará con evaluación temprana. | ||
Line 71: | Line 73: | ||
* (0.2 ptos) Implemente la función '' | * (0.2 ptos) Implemente la función '' | ||
+ | |||
+ | <note important> | ||
+ | La función '' | ||
+ | Por ejemplo, '' | ||
+ | '' | ||
+ | </ | ||
+ | |||
* (0.1 ptos) Actualice '' | * (0.1 ptos) Actualice '' | ||
* (0.1 ptos) Escriba tests que demuestran el buen funcionamiento del typechecker en presencia de modificadores. | * (0.1 ptos) Escriba tests que demuestran el buen funcionamiento del typechecker en presencia de modificadores. | ||
Line 80: | Line 89: | ||
Ahora que el lenguaje soporta tipos con modificadores, | Ahora que el lenguaje soporta tipos con modificadores, | ||
* (1.0 pto) Modifique la función de transformación para que se apliquen los ajustes necesarios. | * (1.0 pto) Modifique la función de transformación para que se apliquen los ajustes necesarios. | ||
+ | |||
+ | <note important> | ||
+ | Asegúrese de realizar los ajustes apropiados en el caso '' | ||
+ | </ | ||
+ | |||
* (0.3 ptos) Escriba tests, usando lo implementado en la Parte 1, que evidencien la nueva funcionalidad. Considere todos los casos posibles (incluyendo con funciones de orden superior!). | * (0.3 ptos) Escriba tests, usando lo implementado en la Parte 1, que evidencien la nueva funcionalidad. Considere todos los casos posibles (incluyendo con funciones de orden superior!). | ||
Line 88: | Line 102: | ||
* Si se requiere una evaluación temprana y el argumento fue declarado lazy o by-name, entonces es necesario ajustarlo para que efectivamente se evalúe en ese punto. | * Si se requiere una evaluación temprana y el argumento fue declarado lazy o by-name, entonces es necesario ajustarlo para que efectivamente se evalúe en ese punto. | ||
* Si tanto la función como el argumento calzan en la estrategia, entonces no hay nada que hacer. | * Si tanto la función como el argumento calzan en la estrategia, entonces no hay nada que hacer. | ||
- | * Recuerde que la diferencia entre lazy (a.k.a. by-need) y by-name es que la primera evalúa una sola vez la expresión y luego " | + | * Recuerde que la diferencia entre lazy (a.k.a. by-need) y by-name es que la primera evalúa una sola vez la expresión y luego " |
</ | </ | ||