Tarea 2: Subtipos y contratos

Parte 1: records y 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.

  1. Explique como se puede reconciliar la noción de “subsumption” con contratos. Es decir, explique que debe significar que T1@C1 <: T2@C2
  2. 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)

  1. 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:

Fecha de entrega: Miercoles 17 de Noviembre, por U-Cursos.