De "Programación Erlang" por Cesarini ejercicio 3-2creación de la lista en Erlang
Como voy a través de "Programación de Erlang" me da problemas de creación de la lista extraños. Del ejercicio 3-2 escribí dos funciones similares.
create(0) -> [];
create(N) when N > 0 -> [ N | create(N-1) ].
reverse_create(0) -> [];
reverse_create(N) when N > 0 -> [ reverse_create(N-1) | N ].
así crea (3) genera como era de esperar.
ejercicio3: crear (3).
[3,2,1]
pero reverse_create no genera la lista que espero.
exercise3: reverse_create (3).
[[[[] | 1] | 2] | 3]
¿Qué necesito cambiar para que reverse_create (3) devuelve [1,2,3]? Gracias por la explicación.
OK, tengo el ejemplo trabajando ¿Alguna pista de por qué las dos funciones similares anteriores devuelven respuestas tan diferentes? ¿Por qué se crea una lista limpia de return mientras que reverse_create devuelve listas de listas? – Superpolock
puede leer esto para obtener una explicación: http://learnyousomeerlang.com/starting-out-for-real#lists y también ver estos: http://stackoverflow.com/questions/3232786/how-to-concat-lists -in-erlang-without-creating-nested-lists y http://stackoverflow.com/questions/1919097/functional-programming-what-is-an-improper-list –