Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
teaching:cc5104:2010-2:tarea2 [2010/10/26 23:11] etanterteaching:cc5104:2010-2:tarea2 [2010/10/26 23:11] (current) etanter
Line 1: Line 1:
 +===== Tarea 2: Subtipos y contratos =====
  
 +**Parte 1: records y subtipos**
 +  * Extienda su lenguaje con records, y subtipos, basandose en lo visto en clases. No se olvide que su lenguaje debe incluir `if'. Su verificador de tipos debe retornar el tipo mínimo del termino dado, si existe, y señalar un error sino.
 +  * Provea los tests suficientes para demostrar el buen funcionamiento de su verificador en presencia de subtipos.
 +
 +**Parte 2: subtipos y contratos**
 +
 +En su lenguaje, los tipos pueden tener un contrato, condición que se verifica dinámicamente. En lo que sigue notamos los tipos T@C, para referirnos al tipo T con contrato C.
 +  - Explique como se puede reconciliar la noción de "subsumption" con contratos. Es decir, explique que debe significar que T1@C1 <: T2@C2 
 +  - Complemente la verificación de contratos teniendo particular cuidado con la asignación de culpa (blame) en caso de que se viole un contrato. (Hint: ahora, la culpa puede provenir del uso de una función, de su implementación, o tambien de un contrato)
 +
 +**Parte 3 (opcional pregrado / obligatorio posgrado)**
 +
 +  - reformule/extienda la formulación (y prueba) de coherencia para el sistema con subtipos y contratos, enfocandose en los contratos (o sea, lo que solo tiene que ver con lo visto en clase no lo tiene que repetir).
 +
 +**Instrucciones**
 +
 +Como siempre, para cada paso entregue código debidamente comentado, con tests y ejemplos ilustrativos.
 +
 +Puntaje:
 +   * pregrado: P1=3 / P2=3 / P3=+1 (opcional)
 +   * posgrado: P1=2 / P2=2 / P3=2
 +
 +Fecha de entrega: Miercoles 17 de Noviembre, por U-Cursos.