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 ) )