Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
teaching:cc4101:tareas:2016-1:tarea2 [2016/05/08 16:04] – created fmosso | teaching:cc4101:tareas:2016-1:tarea2 [2016/11/13 01:10] – [Tarea 2] fmosso | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Tarea 2 ====== | ====== Tarea 2 ====== | ||
- | Esta tarea se distribuye con dos ficheros | + | Esta tarea se distribuye con dos ficheros {{: |
Consulte las normas de entrega de tareas en http:// | Consulte las normas de entrega de tareas en http:// | ||
En esta tarea se le provee el lenguaje MiniScheme+, | En esta tarea se le provee el lenguaje MiniScheme+, | ||
-// Funciones de primera clase con argumentos múltiples//: | -// Funciones de primera clase con argumentos múltiples//: | ||
- | > (run '{{fun {x y z} {+ x y z}} 1 2 3}) | + | > (run '(+ 1 ((fun ([x : Num] [y : Num]) (+ x y)) 1 2))) |
- | 6 | + | 4 |
- | > (run '{with {{x 1} {y 2} {z 3}} {+ x y z}}) | + | |
- | 6 | + | |
- | > (run '{with {} {{fun {} 42}}}) | + | |
- | 42 | + | |
</ | </ | ||
- | - // | + | - // |
- | > (run '{local {{define x 1} | + | > (run '(local ((define x 10) |
- | {define y 2}} | + | (define y x)) |
- | {+ x y}}) | + | (+ x y))) |
- | 3 | + | 20 |
- | > (run ' | + | |
- | {Zero} | + | |
- | {Succ n}}} | + | |
- | {Nat? {Zero}}}) | + | |
- | #t | + | |
- | > (run ' | + | |
- | {Zero} | + | |
- | {Succ n}} | + | |
- | {define pred {fun {n} | + | |
- | | + | |
- | {case {Zero} => {Zero}} | + | |
- | {case {Succ m} => m}}}}} | + | |
- | {pred {Succ {Succ {Zero}}}}}) | + | |
- | {Succ {Zero}} | + | |
</ | </ | ||
- | Observe que '' | + | Observe que '' |
- | + | ||
- | **Warm-up (0.5 ptos)** | + | |
- | Si ejecutan el último ejemplo, veran que el output no es '' | + | |
- | Luego de estudiar el código entregado para entender como se implementan las estructuras de datos, definan una función de pretty-printing para que las estructuras se representen al usuario (como resultado de '' | + | |
===== Listas (1.5 ptos) ===== | ===== Listas (1.5 ptos) ===== | ||
Line 57: | Line 35: | ||
- (0.2) Finalmente, para dar una impresión más cómoda trabajando con listas, modifique el pretty-printer para que en el caso de listas, se use la notación '' | - (0.2) Finalmente, para dar una impresión más cómoda trabajando con listas, modifique el pretty-printer para que en el caso de listas, se use la notación '' | ||
> (run '{list 1 4 6}) | > (run '{list 1 4 6}) | ||
- | {list 1 4 6}</ | + | {list 1 4 6}</ |
===== Evaluación Perezosa (2 ptos)===== | ===== Evaluación Perezosa (2 ptos)===== | ||
MiniScheme+ usa call-by-value como semántica de aplicación de funciones. Sin embargo, es posible agregar evaluación usando call-by-need para casos específicos. | MiniScheme+ usa call-by-value como semántica de aplicación de funciones. Sin embargo, es posible agregar evaluación usando call-by-need para casos específicos. | ||
Line 89: | Line 67: | ||
//Nota: Todas las definiciones que se le piden a continuación deben realizarse en el lenguaje MiniScheme+ con las extensiones hasta este punto de la tarea.// | //Nota: Todas las definiciones que se le piden a continuación deben realizarse en el lenguaje MiniScheme+ con las extensiones hasta este punto de la tarea.// | ||
- | | ||
- (0.4) Defina las funciones '' | - (0.4) Defina las funciones '' | ||
(def stream-hd ...) | (def stream-hd ...) |