Final 28/12/2009 (Paradigmas)
Ejercicio 1
Explicar el concepto de currificación y dar ejemplos.
Ejercicio 2
Considerar la siguiente extension de lambda calculo:
raise M
try M1, M2, ... , Mn with N
La expresion raise M evalua M a un numero natural y genera una excepcion con ese numero como parametro. El objetivo de ese numero es que el manejador lo utilice como dato para poder tratar ese error. La otra expresion que se agrega es try M1, M2, ... , Mn with N. La semantica de esta expresion es que primero se evalua M1...Mi , descartando los resultados, hasta que alguno genera una excepcion y se pasa el control al manejador N, si no genera una excepcion se retorna el valor de Mn.
Observar que el conjunto de valores no se modifica. Tampoco es necesario que las Mi tengan todas el mismo tipo.
Para las nuevas expresiones dar: a) la semantica operacional, b) las reglas de tipado, c) Si Try usara M1 y M2 (Try con dos elementos) extender el algoritmo de inferencia.
Ejercicio 3
Dada una formula dar su forma clausal.
Ejercicio 4
Hacer inferencia de tipos sobre (\x.\y. x (y x))