Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision |
teaching:cc4101:tareas:2020-1:tarea2 [2020/06/06 17:20] – created bsubercaseaux | teaching:cc4101:tareas:2020-1:tarea2 [2020/06/16 20:22] – [Listas (1.5 ptos)] bsubercaseaux |
---|
====== Tarea 2 (Entrega: 16 de junio de 2020) ====== | ====== Tarea 2 (Entrega: 22 de junio de 2020) ====== |
Esta tarea se distribuye con un archivo zip ({{ :teaching:cc4101:tareas:2020-1:baset2.zip |baseT2.zip}}) que contiene 2 archivos: main.rkt y tests.rkt. Los archivos main.rkt y tests.rkt están incompletos, y en ellos tienen que implementar lo que se solicita en las preguntas siguientes. | Esta tarea se distribuye con un archivo zip ({{ :teaching:cc4101:tareas:2020-1:baset2.zip |baseT2.zip}}) que contiene 2 archivos: main.rkt y tests.rkt. Los archivos main.rkt y tests.rkt están incompletos, y en ellos tienen que implementar lo que se solicita en las preguntas siguientes. |
| |
===== Warm-up (0.5 ptos) ===== | ===== Warm-up (0.5 ptos) ===== |
| |
- (0.4 ptos) Si ejecutan el último ejemplo, verán que el output no es <code scheme>"{Succ {Zero}}"</code> sino ''(structV 'Nat 'Succ (list (structV 'Nat 'Zero empty)))''. Defina la función ''pretty-printing'' que toma una estructura y entrega un string más amigable al usuario (similar a como se indica anteriormente). | - (0.4 ptos) Si ejecutan el penúltimo ejemplo, verán que el output no es <code scheme>"{Succ {Zero}}"</code> sino ''(structV 'Nat 'Succ (list (structV 'Nat 'Zero empty)))''. Defina la función ''pretty-printing'' que toma una estructura y entrega un string más amigable al usuario (similar a como se indica anteriormente). |
<code scheme> | <code scheme> |
> (pretty-printing (structV 'Nat 'Succ (list (structV 'Nat 'Zero empty)))) | > (pretty-printing (structV 'Nat 'Succ (list (structV 'Nat 'Zero empty)))) |
3 | 3 |
</code> | </code> |
| |
| Asuma que la función ''length'' solo recibe listas de la forma '''{Cons e1 {Cons e2 ... {Cons en {Empty}}...}}''. |
- (0.5) Extienda el lenguaje para soportar la notación '''{list e1 e2 ... en}'' como //azúcar sintáctico// para '''{Cons e1 {Cons e2 ... {Cons en {Empty}}...}}''.<code scheme> | - (0.5) Extienda el lenguaje para soportar la notación '''{list e1 e2 ... en}'' como //azúcar sintáctico// para '''{Cons e1 {Cons e2 ... {Cons en {Empty}}...}}''.<code scheme> |
> (run '{match {list {+ 1 1} 4 6} | > (run '{match {list {+ 1 1} 4 6} |