Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
teaching:cc4101:tareas:2020-1:tarea2 [2020/06/06 17:21] bsubercaseauxteaching:cc4101:tareas:2020-1:tarea2 [2020/06/16 20:22] – [Listas (1.5 ptos)] bsubercaseaux
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}