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
teaching:cc4101:tareas:2026-1:tarea1b [2026/03/16 03:10] – [Tarea 1b (Entrega: 30 de Abril de 2025)] msegurteaching:cc4101:tareas:2026-1:tarea1b [2026/03/16 05:21] (current) – [Parte 3. Contratos en funciones de primer orden (1 pt. de bonus)] msegur
Line 259: Line 259:
 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.pts]** Implemente la función ''parse-arg'' que parsea un argumento de función.+  - **[0.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.
  
Line 304: Line 305:
   "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>
Line 358: Line 359:
  
 <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}}}