Prueba 2017 ejercicio 2

Re: Prueba 2017 ejercicio 2

de Germán Ferrari -
Número de respuestas: 0

Hola.

Este ejercicio lo vimos en la consulta. Copio la respuesta acá así les queda para otros compañeros.

Para estos ejercicios sirve tener presente las definiciones de las funciones involucradas, por ejemplo en este caso podemos definir last como:

last [x         ] = x
last (_ : x : xs) = last (x : xs)

El problema que tenés en tu razonamiento es que para evaluar last necesariamente vas a tener que ir descartando elementos que están al principio de la lista que recibe como argumento hasta llegar al último, y en ese proceso vas a tener que ir reduciendo l2 y l1 sucesivamente. Eso hace nunca llegues a observar una lista con un solo elemento, que es el único caso en last produce algo, y por eso la llamada termina divergiendo.

Saludos,
Germán.