Ejercicio 1

Ejercicio 1

de Guillermo Zorron Bordone -
Número de respuestas: 1

La función del ejercicio 1 retorna bottom, según las palabras de un profesor en el C22, bottom es undefined, todo lo que ustedes quieren que sea, por lo tanto puede ser tanto int como bool, lo que también concuerda con la definición de bottom en Haskel.org 'Bottom is a member of any type, even the trivial type ()'.

Por lo que concluyo que la solución que fue dada como correcta  foo :: (Ord a,Eq b) ⇒ a → a → b → a → b → Bool es una instancia del tipo más general al igual que  foo :: (Ord a,Eq b) ⇒ a → a → b → a → b → Int, por lo que concluyo que no tiene tipo más general, o en todo caso sería  foo :: (Ord a,Eq b) ⇒ a → a → b → a → b → undefined o algo así.

En respuesta a Guillermo Zorron Bordone

Re: Ejercicio 1

de Juan Pablo García Garland -

La lista contiene a undefined como primer elemento, pero el segundo elemento es un par de booleanos. Entonces inferimos que la ocurrencia de undefined en la expresión va a tener tipo (Bool, Bool) -porque las listas son homogeneas-.

En ese sentido es que undefined es un miembro de cualquier tipo. undefined es polimórfico, cualquier tipo tiene un habitante undefined, por eso la expresión del ejercicio compila. Las ocurrencias de expresiones polimórficas tienen tipo eventualmente más específico dependiendo del contexto, undefined no es la excepción.

Por último, no existe algo así como un tipo undefined.