Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| teaching:cc4101:tareas:2023-1:tarea2:parte3 [2023/05/11 16:22] – etanter | teaching:cc4101:tareas:2023-1:tarea2:parte3 [2023/05/11 16:50] (current) – [Parte 3. Estrategias de evaluación (2 ptos.)] tvallejos | ||
|---|---|---|---|
| Line 7: | Line 7: | ||
| La extensión de SL consiste en agregar // | La extensión de SL consiste en agregar // | ||
| <code scheme> | <code scheme> | ||
| - | ;; La función | + | ;; Una función de tipo Num -> Num significa |
| - | > (run-p-sl '{with {f {fun {Num -> Num} {x} {+ x x}}} | + | > (run-p-sl '{with {f {fun {x : Num} -> Num : {+ x x}}} |
| {f {printn 10}}}) | {f {printn 10}}}) | ||
| (result 20 ' | (result 20 ' | ||
| - | ;; La función | + | ;; Una función |
| - | > (run-p-sl '{with {f {fun {{lazy Num} -> Num} {x} {+ x x}}} | + | > (run-p-sl '{with {f {fun {x : {lazy Num}} -> Num : {+ x x}}} |
| {f {printn 10}}}) | {f {printn 10}}}) | ||
| (result 20 ' | (result 20 ' | ||
| - | ;; La función | + | ;; Una función |
| - | > (run-p-sl '{with {f {fun {{name Num} -> Num} {x} {+ x x}}} | + | > (run-p-sl '{with {f {fun {x : {name Num}} -> Num : {+ x x}}} |
| {f {printn 10}}}) | {f {printn 10}}}) | ||
| (result 20 ' | (result 20 ' | ||
| ;; 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 {{lazy Num} -> Num} {x} 1}} | + | > (run-p-sl '{with {f {fun {x : {lazy Num} -> Num : 1}}} |
| {f {printn 10}}}) | {f {printn 10}}}) | ||
| (result 1 ' | (result 1 ' | ||
| Line 41: | Line 41: | ||
| | <id> | | <id> | ||
| | {<SL> <SL>} | | {<SL> <SL>} | ||
| - | | {fun {< | + | | {fun {< |
| | {printn <SL>} | | {printn <SL>} | ||
| Line 87: | Line 87: | ||
| * Una forma de retrasar la evaluación de una expresión '' | * Una forma de retrasar la evaluación de una expresión '' | ||
| * 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 es necesario | + | * Si tanto la función como el argumento calzan en la estrategia, entonces no hay nada que hacer. |
| - | * Recuerde que la diferencia entre lazy 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) |
| </ | </ | ||

