Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
teaching:cc4101:tareas:2025-1:tarea2:parte3 [2025/05/11 21:11] – [3.2 Chequeo de tipos] msegur | teaching:cc4101:tareas:2025-1:tarea2:parte3 [2025/05/14 17:03] (current) – [3.3 Transformación a CL] dibanez | ||
---|---|---|---|
Line 5: | Line 5: | ||
En esta sección van a extender el lenguaje SL para que se pueda especificar la estrategia de evaluación de cada argumento si es necesario, ya sea con semántica // | En esta sección van a extender el lenguaje SL para que se pueda especificar la estrategia de evaluación de cada argumento si es necesario, ya sea con semántica // | ||
- | La extensión de SL consiste en agregar // | + | La extensión de SL consiste en agregar // |
Nota: '' | Nota: '' | ||
Line 14: | Line 14: | ||
(result 20 ' | (result 20 ' | ||
- | ;; Una función de tipo (lazy Num -> Num), usará evaluación lazy/ | + | ;; Una función de tipo ((lazy Num) -> Num), usará evaluación lazy/ |
> (run-p-sl '{with {f {fun {x : {lazy Num}} -> Num : {+ x x}}} | > (run-p-sl '{with {f {fun {x : {lazy Num}} -> Num : {+ x x}}} | ||
{f {printn 10}}}) | {f {printn 10}}}) | ||
(result 20 ' | (result 20 ' | ||
- | ;; Una función de tipo (name Num -> Num), usará evaluación name/ | + | ;; Una función de tipo ((name Num) -> Num), usará evaluación name/ |
> (run-p-sl '{with {f {fun {x : {name Num}} -> Num : {+ x x}}} | > (run-p-sl '{with {f {fun {x : {name Num}} -> Num : {+ x x}}} | ||
{f {printn 10}}}) | {f {printn 10}}}) | ||
Line 25: | Line 25: | ||
;; Otro ejemplo de lazy. Note que efectivamente al evaluarla se comporta correctamente. | ;; Otro ejemplo de lazy. Note que efectivamente al evaluarla se comporta correctamente. | ||
- | > (run-p-sl '{with {f {fun {x : {lazy Num} -> Num : 1}}} | + | > (run-p-sl '{with {f {fun {x : {lazy Num}} -> Num : 1}} |
{f {printn 10}}}) | {f {printn 10}}}) | ||
(result 1 ' | (result 1 ' | ||
Line 75: | Line 75: | ||
<note important> | <note important> | ||
- | La función compatible sólo debe comprobar la compatibilidad // | + | La función |
- | <\note> | + | Por ejemplo, '' |
+ | '' | ||
+ | </note> | ||
* (0.1 ptos) Actualice '' | * (0.1 ptos) Actualice '' | ||
- | * (0.1 ptos) Escriba tests que demuestran el buen funcionamiento del typechecker en presencia de modificadores. | ||
---- | ---- | ||
Line 86: | Line 87: | ||
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.4 pto) Modifique la función de transformación para que se apliquen los ajustes necesarios. |
- | * (0.3 ptos) Escriba tests, usando lo implementado | + | |
+ | <note important> | ||
+ | Asegúrese de realizar los ajustes apropiados | ||
+ | </ | ||
<note tip> | <note tip> |