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:tarea1xyz [2023/04/05 14:39] – [Parte 3. Contratos en funciones de primer orden (1.5 ptos.)] tvallejosteaching:cc4101:tareas:tarea1xyz [2023/04/05 21:02] (current) etanter
Line 17: Line 17:
  
  
-Deben entregar via U-cursos **un archivo .zip** que contenga los siguientes archivos: ''p1.rkt'', ''p1-test.rkt'', ''p2.rkt'', ''p2-test.rkt'', ''p3.rkt'' y ''p3-test.rkt'', archivos que deberán contener las funcionalidades solicitadas en cada pregunta y los test respectivos. Puede usar como base los archivos que se encuentra aquí.+Deben entregar via U-cursos **un archivo .zip** que contenga los siguientes archivos: ''p1.rkt'', ''p1-test.rkt'', ''p2.rkt'', ''p2-test.rkt'', ''p3.rkt'' y ''p3-test.rkt'', archivos que deberán contener las funcionalidades solicitadas en cada pregunta y los tests respectivos. Puede usar como base los archivos que se encuentra aquí.
  
  
Line 52: Line 52:
            | {with {{<id> <expr>}*} <expr>}            | {with {{<id> <expr>}*} <expr>}
            | {<id> <expr>*}            | {<id> <expr>*}
-            
-<val>   ::= <num> 
-          | <bool> 
-          | <pair <val> <val>> 
                        
 </code> </code>
 Un programa está compuesto de 0 o más definiciones de funciones, además de una expresión final que sirve de punto de entrada (como el //main// en C y Java). Una definición de función incluye el nombre de la función, el nombre de los parámetros formales, y finalmente la expresión del cuerpo de la función. Las expresiones ''fst'' y ''snd'' obtienen el primer y segundo elemento de un par, respectivamente (similar a ''car'' y ''cdr'' de Racket). Las demás expresiones siguen la presentación estándar vista en clases. Un programa está compuesto de 0 o más definiciones de funciones, además de una expresión final que sirve de punto de entrada (como el //main// en C y Java). Una definición de función incluye el nombre de la función, el nombre de los parámetros formales, y finalmente la expresión del cuerpo de la función. Las expresiones ''fst'' y ''snd'' obtienen el primer y segundo elemento de un par, respectivamente (similar a ''car'' y ''cdr'' de Racket). Las demás expresiones siguen la presentación estándar vista en clases.
  
-Los programas que terminan reducen a valores. Estos pueden ser números, valores de verdad o pares de valores.+Los programas que terminan reducen a valores. Estos pueden ser números, booleanos o pares de valores. Siguiendo buenas prácticas, definimos un tipo de dato inductivo ''Val'' para los valores (provisto en el código fuente de la parte 1).
  
 Algunos ejemplos de programas válidos para este lenguaje pueden ser: Algunos ejemplos de programas válidos para este lenguaje pueden ser:
Line 250: Line 246:
 > (run '{{define {add {x : Num} {y : Num}} {+ x y}} > (run '{{define {add {x : Num} {y : Num}} {+ x y}}
          {define {oh-no {x : Num @ add}} x}          {define {oh-no {x : Num @ add}} x}
-                    #t} 
          {oh-no 21 21}})          {oh-no 21 21}})
 "Static contract error: invalid type for add" "Static contract error: invalid type for add"
 </code> </code>