| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| teaching:cc4101:tareas:2026-1:tarea1b [2026/03/16 03:10] – [Tarea 1b (Entrega: 30 de Abril de 2025)] msegur | teaching:cc4101:tareas:2026-1:tarea1b [2026/04/14 03:17] (current) – [Lenguaje con tipos estáticos] msegur |
|---|
| </note> | </note> |
| |
| Deben entregar via U-cursos **un archivo .zip** que contenga los siguientes archivos:{{ :teaching:cc4101:tareas:2025-1:t1b:p1.rkt |p1.rkt}}, {{ :teaching:cc4101:tareas:2025-1:t1b:p1-test.rkt |p1-test.rkt}}, {{ :teaching:cc4101:tareas:2025-1:t1b:p2.rkt |p2.rkt}}, {{ :teaching:cc4101:tareas:2025-1:t1b:p2-test.rkt |p2-test.rkt}}, archivos que deberán contener las funcionalidades solicitadas en cada pregunta y los tests respectivos. | Deben entregar via U-cursos **un archivo .zip** que contenga los siguientes archivos:{{ :teaching:cc4101:tareas:2026-1:t1b:p1.rkt |p1.rkt}}, {{ :teaching:cc4101:tareas:2026-1:t1b:p1-test.rkt |p1-test.rkt}}, {{ :teaching:cc4101:tareas:2026-1:t1b:p2.rkt |p2.rkt}}, {{ :teaching:cc4101:tareas:2026-1:t1b:p2-test.rkt |p2-test.rkt}}, archivos que deberán contener las funcionalidades solicitadas en cada pregunta y los tests respectivos. |
| |
| Si lo desea, puede obtener un bonus resolviendo la tercera parte, que es opcional: {{ :teaching:cc4101:tareas:2025-1:t1b:p3.rkt |p3.rkt}} y {{ :teaching:cc4101:tareas:2025-1:t1b:p3-test.rkt |pr3-test.rkt}}. Más detalles al final del documento. | Si lo desea, puede obtener un bonus resolviendo la tercera parte, que es opcional: {{ :teaching:cc4101:tareas:2026-1:t1b:p3.rkt |p3.rkt}} y {{ :teaching:cc4101:tareas:2026-1:t1b:p3-test.rkt |pr3-test.rkt}}. Más detalles al final del documento. |
| |
| **Nota:** Le podría ser útil el archivo {{ :teaching:cc4101:tareas:2025-1:t1b:env.rkt |env.rkt}}. | **Nota:** Le podría ser útil el archivo {{ :teaching:cc4101:tareas:2026-1:t1b:env.rkt |env.rkt}}. |
| |
| Deben entregar vía U-Cursos **un único archivo .zip** que contenga todos los archivos de su entrega. | Deben entregar vía U-Cursos **un único archivo .zip** que contenga todos los archivos de su entrega. |
| Note que se agregó el nodo ''<arg>'' al BNF, el cual especifica la sintaxis concreta de un argumento de función. | Note que se agregó el nodo ''<arg>'' al BNF, el cual especifica la sintaxis concreta de un argumento de función. |
| - **[0.1 pts]** Defina el tipo de datos ''Arg'' que representa a un argumento de función en el AST. | - **[0.1 pts]** Defina el tipo de datos ''Arg'' que representa a un argumento de función en el AST. |
| - **[0.2 pts]** Implemente la función ''parse-arg'' que parsea un argumento de función. | - **[0.1 pts]** Implemente la función ''parse-arg'' que parsea un argumento de función. |
| | - **[0.1 pts]** Modifique el tipo Fundef para almacenar el tipo de retorno. |
| - **[0.1 pts]** Modifique la función ''parse-fundef'' para que utilice ''parse-arg'' para parsear los argumentos. | - **[0.1 pts]** Modifique la función ''parse-fundef'' para que utilice ''parse-arg'' para parsear los argumentos. |
| |
| "Static type error: expected Num found Bool" </code> <code scheme> | "Static type error: expected Num found Bool" </code> <code scheme> |
| > (typecheck (parse-prog '{{< 10 #t}})) | > (typecheck (parse-prog '{{< 10 #t}})) |
| "Static type error: operator < expected Num found Bool"</code> <code scheme> | "Static type error: expected Num found Bool"</code> <code scheme> |
| > (typecheck (parse-prog '{{if 73 #t #t}})) | > (typecheck (parse-prog '{{if 73 #t #t}})) |
| "Static type error: expected Bool found Num"</code> <code scheme> | "Static type error: expected Bool found Num"</code> <code scheme> |
| |
| <code scheme> | <code scheme> |
| {{define {pair-non-zero? {p : {Pair Num Num}}} : Bool {&& {= 0 {fst p}} {= 0 {snd p}}}} | {{define {pair-non-zero? {p : {Pair Num Num}}} : Bool {! {|| {= 0 {fst p}} {= 0 {snd p}}}}} |
| {define {pair-div {p : {Pair Num Num} @ pair-non-zero?}} : Num {/ {fst x} {snd x}}} | {define {pair-div {p : {Pair Num Num} @ pair-non-zero?}} : Num {/ {fst x} {snd x}}} |
| {+ {pair-div {cons 30 5}} {pair-div {cons 60 0}}} | {+ {pair-div {cons 30 5}} {pair-div {cons 60 0}}} |