Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En clases anteriores...
Introducci on a C-b como lenguaje representativo del paradigma funcional Formulaci on de un sistema de tipos a trav es de axiomas y reglas de inferencia Denici on de sem antica operacional small-step (en un paso) Primera extensi on: los naturales
C alculo lambda II
Tipos: motivaci on
Son correctas estas expresiones? x :Bool.x (x :Bool.x ) x y x 5x x x :Bool.x x x
Observaciones
Los tipos nos permiten caracterizar las expresiones del lenguaje que tienen sentido. El C- que usamos tiene alto orden. El C- nos ayuda a comprender los conceptos fundamentales de la programaci on funcional.
C alculo lambda II Paradigmas de Lenguajes de Programaci on
true : Bool
false : Bool
x : x :
{x : } M : x : .M :
M: N: M N:
C alculo lambda II
Observaciones
La sem antica nos permite interpretar las expresiones correctas (t erminos tipados) del lenguaje. El objetivo es saber como se evaluan o ejecutan los t erminos para conocer su signicado. La sem antica que usamos es en un paso (small-step ). El C- que usamos no es lazy.
C alculo lambda II Paradigmas de Lenguajes de Programaci on
Valores
C alculo lambda II
MM M NM N
NN V NV N
(x : .M ) V M [x V ]
C alculo lambda II
Qu e hay que agregar? ...t erminos para representar el constructor y los observadores M ::= ... | < M , N > | 1 (M ) | 2 (M ) ...y un tipo para estas nuevas expresiones ::= ... |
C alculo lambda II
Qu e hay que agregar? Al menos una regla por cada forma nueva de sintaxis, porque cada una de ellas precisa poder ser tipada en algunos casos. Notar que, de no hacerlo, ser a imposible construir t erminos tipables ( utiles) con dicha forma.
C alculo lambda II
M: N: < M , N >:
C alculo lambda II
M : 1 (M ) :
N : 2 (N ) :
C alculo lambda II
Necesitamos reducir todos los pares con sentido que no sean valores. Cu ales son los valores? Empecemos por ah entonces...
C alculo lambda II
C alculo lambda II
C alculo lambda II
MM 1 (M ) 1 (M )
MM 2 (M ) 2 (M )
1 (< V , W >) V
2 (< V , W >) W
C alculo lambda II
C alculo lambda II
Qu e hay que agregar? Como antes: una regla por cada forma nueva de sintaxis, porque cada una de ellas precisa poder ser tipada en algunos casos.
C alculo lambda II
Nil : AB
Para Bin, en cambio, el tipo queda determinado por el tipo de los subt erminos.
C alculo lambda II
M : AB root (M ) :
M : AB nil (M ) : Bool
M : AB left (M ) : AB
M : AB right (M ) : AB
C alculo lambda II
C alculo lambda II
MM Bin(M , N , O ) Bin(M , N , O )
NN Bin(V , N , O ) Bin(V , N , O )
OO Bin(V , W , O ) Bin(V , W , O )
C alculo lambda II
MM left (M ) left (M )
MM right (M ) right (M )
MM root (M ) root (M )
MM nil (M ) nil (M )
C alculo lambda II
left (Bin(V , W , Y )) V
right (Bin(V , W , Y )) Y
root (Bin(V , W , Y )) W
C alculo lambda II
Vamos a ver otra forma de representar proyectores u observadores m as prolija y que requiere menos reglas (aunque una construcci on m as sosticada).
Usamos los arboles nuevamente para ejemplicar, de manera que se pueda comparar correctamente y notar la desaparici on de algunos problemas que ya marcamos.
C alculo lambda II
Y los t erminos,
M ::= ... | Nil | Bin(M , N , O ) | CaseAB M of Nil N ; Bin(m, n, o ) O
C alculo lambda II
Nil : AB
M : AB O : AB N : Bin(M , N , O ) : AB
C alculo lambda II
C alculo lambda II
C alculo lambda II
NN Bin(V , N , O ) Bin(V , N , O )
OO Bin(V , W , O ) Bin(V , W , O )
C alculo lambda II
N ; Bin(m, n, o )
ON
C alculo lambda II
En la pr oxima clase...
Inferencia de tipos para C-b . Mecanismo para reconstruir el tipo de una expresi on cualquiera sin anotaciones de tipo.
C alculo lambda II