Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
teaching:cc4101:tareas:2017-2:tarea2 [2017/09/19 19:25] – [Tareas a realizar] folmedo | teaching:cc4101:tareas:2017-2:tarea2 [2017/10/02 18:41] (current) – [Tareas a realizar] folmedo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Tarea 2 ====== | ====== Tarea 2 ====== | ||
- | Esta tarea se distribuye con dos ficheros base.rkt y tests.rkt ({{ : | + | Esta tarea se distribuye con dos ficheros base.rkt y tests.rkt ({{ : |
Consulte las normas de entrega de tareas en http:// | Consulte las normas de entrega de tareas en http:// | ||
- | |||
===== Presentación del Lenguaje ===== | ===== Presentación del Lenguaje ===== | ||
Line 11: | Line 10: | ||
* donde se puedan definir **tipos inductivos** propios (los únicos valores atómicos del lenguaje van a ser de algún tipo definido por el usuario), y | * donde se puedan definir **tipos inductivos** propios (los únicos valores atómicos del lenguaje van a ser de algún tipo definido por el usuario), y | ||
- | * que soporte funciones | + | * que soporte funciones de **múltiples argumentos** y **anotaciones de tipo**. |
Line 26: | Line 25: | ||
< | < | ||
- | | (fun (<id> : < | + | | (fun (<id> : < |
| (match < | | (match < | ||
| (< | | (< | ||
Line 104: | Line 103: | ||
(match b | (match b | ||
| | ||
- | | + | |
" | " | ||
</ | </ | ||
Line 130: | Line 129: | ||
> "(t) : bool" | > "(t) : bool" | ||
</ | </ | ||
+ | |||
+ | Si un patrón contiene múltiples ocurrencias de un identificador, | ||
=== Recursión y múltiples argumentos === | === Recursión y múltiples argumentos === | ||
Line 201: | Line 202: | ||
<note important> | <note important> | ||
- | == P3 (2.25 Pt) == | + | == P3 (2.50 Pt) == |
- | Defina la función **'' | + | Defina la función **'' |
**Ayuda. ** Piense si el soporte de recursión en las funciones de primer orden requiere algún tratamiento especial o no. | **Ayuda. ** Piense si el soporte de recursión en las funciones de primer orden requiere algún tratamiento especial o no. | ||
- | == P4 (1.75 Pt) == | + | == P4 (1.50 Pt) == |
Defina la función **'' | Defina la función **'' | ||
- | * Construir un entorno inicial que contenga los bindings correspondientes para cada constructor de los tipos inductivos que se hayan definidos | + | * Construir un entorno inicial que contenga los bindings correspondientes para cada constructor de los tipos inductivos que se hayan definido |
* Evaluar la expresión " | * Evaluar la expresión " | ||
* Transformar el resultado de esa evaluación en un String, como se muestra en los ejemplos. | * Transformar el resultado de esa evaluación en un String, como se muestra en los ejemplos. | ||
Line 214: | Line 215: | ||
**Nota**: Recuerde que la definición de funciones permiten múltiples argumentos. Puede asumir para toda la tarea que nunca se van a entregar dos argumentos con el mismo nombre. | **Nota**: Recuerde que la definición de funciones permiten múltiples argumentos. Puede asumir para toda la tarea que nunca se van a entregar dos argumentos con el mismo nombre. | ||
- | |||
- | |||
- | |||
- | ===== Tests ===== | ||
- | |||
- | <code scheme> | ||
- | (terminate ' | ||
- | {t : bool} | ||
- | {f : bool}} | ||
- | | ||
- | {O : nat} | ||
- | {S : {nat -> nat}}} | ||
- | {def even {n : nat} : bool | ||
- | {match n | ||
- | {{case {O} => {t}} | ||
- | {case {S n1} => {match n1 | ||
- | | ||
- | {case {S n2} => {even n2}}}}}}}} | ||
- | {even {S {S {O}}}}}) | ||
- | > " | ||
- | </ | ||