Parcial 2022 v1 ejercicio 4

Parcial 2022 v1 ejercicio 4

de Pedro Javier Ramos Cordoba -
Número de respuestas: 1

Hola, haciendo pruebas en el compilador, con el código dado el tipo es el de la respuesta b pero si le agrego el tipo de la respuesta c "a mano", el compilador lo acepta y me permite por ejemplo llamar foo (Left 9).

Entonces cuál sería la regla que usa el compilador para no tomar el tipo mas general por defecto?


En respuesta a Pedro Javier Ramos Cordoba

Re: Parcial 2022 v1 ejercicio 4

de Marcos Viera - InCo -
Si a foo le asignás el tipo Either a I -> P, luego la llamada a foo que hacés en la recursión tiene un tipo distinto, que es Either P I -> P.
En este caso estarías haciendo uso de "recursión polimórfica", que es un concepto que no vimos en el curso y requiere de que se anoten los tipos, porque la inferencia de ese tipo es indecidible.

saludos