Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| teaching:cc4101:tareas:2016-2:tarea2 [2016/11/02 03:49] – [Recursión] fmosso | teaching:cc4101:tareas:2016-2:tarea2 [2016/11/21 15:21] (current) – [P2 - Análisis de Terminación (3.0pt)] fmosso | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| En esta tarea se le pide construir un lenguaje capaz de definir sus propios tipos. Use el archivo base.rkt como punto de partida. | En esta tarea se le pide construir un lenguaje capaz de definir sus propios tipos. Use el archivo base.rkt como punto de partida. | ||
| - | ===== P1 - Estructuras Inductivas y Pattern Matching (2.0pt) ===== | + | ===== P1 - Estructuras Inductivas y Pattern Matching (3.0pt) ===== |
| En esta primera parte defina un lenguaje con funciones de primera clase de múltiples argumentos, en donde los únicos otros valores son estructuras definibles por el usuario. | En esta primera parte defina un lenguaje con funciones de primera clase de múltiples argumentos, en donde los únicos otros valores son estructuras definibles por el usuario. | ||
| Line 122: | Line 122: | ||
| Funciones definidas con '' | Funciones definidas con '' | ||
| - | <code scheme> | ||
| - | (run ' | ||
| - | {O : nat} | ||
| - | {S : {nat -> nat}}} | ||
| - | {def byZero {n : nat} : nat | ||
| - | | ||
| - | | ||
| - | {case {S {O}} => {byZero {O}}} | ||
| - | {case {S {S {O}}} => {byZero {S {O}}}}}}} | ||
| - | | ||
| - | >" | ||
| - | </ | ||
| <code scheme> | <code scheme> | ||
| Line 176: | Line 164: | ||
| - | ===== P3 - Análisis de Terminación (2.0pt) ===== | + | ===== P2 - Análisis de Terminación (3.0pt) ===== |
| Tener un lenguaje donde los valores son estructuras inductivas permite detectar casos de recursión estructural, | Tener un lenguaje donde los valores son estructuras inductivas permite detectar casos de recursión estructural, | ||
| Line 235: | Line 223: | ||
| {case {S n3} => {match n1 | {case {S n3} => {match n1 | ||
| {{case {O} => {weird n3 {S n1}}} | {{case {O} => {weird n3 {S n1}}} | ||
| - | {case {S n4} => {weird n4 n2}}}}}}}} | + | {case {S n4} => {weird n4 n3}}}}}}}} |
| {O}}) | {O}}) | ||
| > " | > " | ||
| </ | </ | ||
| - | En el caso anterior existen dos llamadas recursivas a '' | + | En el caso anterior existen dos llamadas recursivas a '' |
| <code scheme> | <code scheme> | ||

