Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
teaching:cc4101:tareas:2020-1:tarea1 [2020/04/13 12:49] – Copia de la tarea 1 de 2019-1 kmaillardteaching:cc4101:tareas:2020-1:tarea1 [2020/04/21 11:15] (current) – [2. Verificación de Tipos [1.5pt]] kmaillard
Line 1: Line 1:
-====== Tarea 1 (Entrega: 04 de mayo de 2020) ======+====== Tarea 1 (Entrega: 06 de mayo de 2020) ======
  
  
-Esta tarea se distribuye con un archivo zip {{ :teaching:cc4101:resources:tareas:2019-1:tarea1:base.zip |base}} que contiene 3 archivos: main.rkt, tests.rkt, y machine.rkt. Los archivos main.rkt y tests.rkt están incompletos, y en ellos tienen que implementar lo que se solicita en las preguntas siguientes. **No deben modificar el archivo machine.rkt**: es una implementación completa de la máquina a la cual van a compilar su lenguaje.+Esta tarea se distribuye con un archivo zip {{teaching:cc4101:tareas:2020-1:base.zip |base}} que contiene 3 archivos: main.rkt, tests.rkt, y machine.rkt. Los archivos main.rkt y tests.rkt están incompletos, y en ellos tienen que implementar lo que se solicita en las preguntas siguientes. **No deben modificar el archivo machine.rkt**: es una implementación completa de la máquina a la cual van a compilar su lenguaje. Tampoco deben agregar tests para la funciones del archivo machine.rkt, sino solo para aquellas funciones que ustedes definen.
  
 Deben entregar via U-cursos **un archivo .zip** que contenga los archivos main.rkt y tests.rkt. Deben entregar via U-cursos **un archivo .zip** que contenga los archivos main.rkt y tests.rkt.
Line 68: Line 68:
      * Para la aplicación de función se valida que la expresión en posición de función sea efectivamente una función.      * Para la aplicación de función se valida que la expresión en posición de función sea efectivamente una función.
      * Para la aplicación de función también se valida que el tipo de la expresión de argumento de la aplicación coincide con el tipo esperado del argumento de la función.      * Para la aplicación de función también se valida que el tipo de la expresión de argumento de la aplicación coincide con el tipo esperado del argumento de la función.
-     * Para la aplicación de un operador se valida que sus operandos tengan el tipo correcto.+     * Para la aplicación de un operador numerico se valida que sus operandos tengan el tipo correcto ''%%'Num%%''.
  
 Los mensaje de error de tipo tienen que seguir el siguiente patrón:  Los mensaje de error de tipo tienen que seguir el siguiente patrón: 
Line 97: Line 97:
   "Type error in expression fun position 1: expected (Num -> Num) found Num"   "Type error in expression fun position 1: expected (Num -> Num) found Num"
   > (typeof (parse '{1 2}))   > (typeof (parse '{1 2}))
-  "Type error in expression app position 1: expected (T -> S) found Num"+  "Type error in expression app position 1: expected (?T -> ?S) found Num"
   > (typeof (parse '{{fun {x : Num} : Num {+ x x}} {fun {x : Num} : Num 5}}))   > (typeof (parse '{{fun {x : Num} : Num {+ x x}} {fun {x : Num} : Num 5}}))
   "Type error in expression app position 2: expected Num found (Num -> Num)"   "Type error in expression app position 2: expected Num found (Num -> Num)"
Line 117: Line 117:
  
 >(typecheck  '{+ 2 {fun {x : Num} : Num x}}) >(typecheck  '{+ 2 {fun {x : Num} : Num x}})
-  "Type error in expression + position 2: expected Num found {Num -> Num}"+  "Type error in expression + position 2: expected Num found (Num -> Num)"