[[teaching:cc4101:tareas:2025-1:tarea2|<< Volver]] Esta parte es de realización **opcional**. Si la desarrolla correctamente obtendrá un bono de 1 pt que podrán agregar a la nota de cualquiera de las tareas. ===== Parte 4. Estrategias de evaluación parte 2 ===== ==== Motivación ==== En la parte anterior definimos la función ''compatible?'' tal que solo ignora los modificadores en //top level//, es decir, si al recibir el mtype ignora su modificador, pero los tipos subyacentes los compara por igualdad. Por esto, el siguiente programa es rechazado por ''typecheck'': {with {apply1 {fun {f : {Num -> Num}} -> Num : {f 1}}} {with {id {fun {x : {lazy Num}} -> Num : x}} {apply1 id}}} Ya que el tipo ''{lazy Num} -> Num'' no es compatible con ''Num -> Num''. Sin embargo, si suponemos la existencia de una función La implementación de estrategias de evaluación realizada en la parte anterior tiene algunos problemas. En particular, para evitar errores de adaptación, implementamos un chequeo más estricto respecto a los modificadores de tipo en los argumentos/valores de retorno de las funciones. En esta parte de la tarea, queremos implementar un ajuste de orden superior, que permita compatibilizar los tipos de entrada y salida de las funciones.