Sesión 11 Inferencia de tipos¶
Inferencia de tipos¶
¿Cual es la diferencia con chequeo de tipos?
Vamos a utilizar unas reglas para calcular los tipos de las expresiones, especialmente procedimientos
Regla del if¶
if
Regla del proc
(t1t2t3..tn)→t
Regla de la evaluación¶
(procval r1 r2 r3 … rn)
procval = (t1t2,t3*tn) →t
r1 = t1, r2 = t2, ..rn = tn
Salida es t
Regla de las primitivas¶
+(x,y) (int*int) → int
and(x,y) (bool*bool) → bool
(x,y) (int*int) → bool
Regla del let¶
let a = 3 b = 2 in …
¿Salida? El tipo de la expresión del in
¿Como hacemos inferencia de tipos?
- Generar las variables de tipo
- Calcular los tipos de los procedimientos
- Observar lo que está adentro de los procedimientos
- Observar las evaluaciones de procedimientos
Esto nos genera un sistema de ecuaciones, recordar que las variables ASIGNACIÓN UNICA
Que modificaciones hicimos al interprete?
- Agregamos el tipo ?
- Generamos las variables de tipo, un serial seguido de un tipo
- Completamos con las reglas de inferencia +(x,y) Regla (int*int) → int tx = int, ty = int