Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revisionBoth sides next revision
teaching:cc4101:tareas:2020-1:tarea2 [2020/06/06 17:20] – created bsubercaseauxteaching:cc4101:tareas:2020-1:tarea2 [2020/06/16 20:22] – [Listas (1.5 ptos)] bsubercaseaux
Line 1: Line 1:
-====== 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.
  
Line 71: Line 71:
 ===== 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))))
Line 98: Line 98:
 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}