Pregutna del Cuestionario 2

Pregutna del Cuestionario 2

de Nestor Valentin Etcheverry Olivieri -
Número de respuestas: 1

Buenas,

Tengo una pregunta con la siguiente función:

a = 1 : foldr (\x xs -> 1 + x : xs) [] a

Entiendo que se está concatenando 1 a la lista generada por foldr (\x xs -> 1 + x : xs) [] a

¿Que sucede cuando se ejecuta foldr (\x xs -> 1 + x : xs) [] a? Yo entiendo que a es una función que devuelve una lista, pero si sustituimos a por la función quedo en un loop recursivo infinito.

Si se ejecuta take 3 a, ¿No se ejecuta este codigo? ¿Como se rompe la recursión?

1 : foldr (\x xs -> 1 + x : xs) [] ( 1 : foldr (\x xs -> 1 + x : xs) [] ( 1 : foldr (\x xs -> 1 + x : xs) [] a ) )