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 17:56] – [Tipos estáticos y contratos] etanterteaching:cc4101:tareas:tarea1xyz [2023/04/05 21:02] (current) etanter
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: