Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision |
teaching:cc4101:tareas:2020-1:tarea2 [2020/06/06 20:21] – bsubercaseaux | teaching:cc4101:tareas:2020-1:tarea2 [2020/06/16 23:24] (current) – [Listas (1.5 ptos)] bsubercaseaux |
---|
===== 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)))) |
</code> | </code> |
===== Listas (1.5 ptos) ===== | ===== Listas (1.5 ptos) ===== |
- (0.3) Defina en MiniScheme+ el tipo de dato inductivo ''List'' (con dos constructores ''Empty'' y ''Cons''), y la función recursiva ''length'' que retorna el largo de una lista. Con estas definiciones, modifique la función ''run'' para que evalúe la expresión dada en un contexto donde se tiene la definición de ''List'' y de ''length''. Se espera el siguiente comportamiento: <code scheme> | - (0.3) Defina en MiniScheme+ el tipo de dato inductivo ''List'' (con dos constructores ''Empty'' y ''Cons''), y la función recursiva ''length'' que retorna el largo de una lista (asumiendo que esta es de la forma '''{Cons e1 {Cons e2 ... {Cons en {Empty}}...}}''). Con estas definiciones, modifique la función ''run'' para que evalúe la expresión dada en un contexto donde se tiene la definición de ''List'' y de ''length''. Se espera el siguiente comportamiento: <code scheme> |
> (run '{Empty? {Empty}}) | > (run '{Empty? {Empty}}) |
#t | #t |