Da "Erlang Programmazione" di Cesarini esercizio 3-2creazione List in Erlang
come vado attraverso "Erlang Programmazione" ottengo problemi creazione della lista strani. Dall'esercizio 3-2 ho scritto due funzioni simili.
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 ].
così creare (3) genera come mi aspetterei.
esercizio3: creare (3).
[3,2,1]
ma reverse_create non genera la lista che mi aspetto.
esercizio3: reverse_create (3).
[[[[] | 1] | 2] | 3]
Cosa devo cambiare in modo che reverse_create (3) restituisca [1,2,3]? Grazie per aver spiegato.
OK, ha funzionato l'esempio Qualche indizio sul perché le due funzioni simili sopra riportino risposte così diverse? Perché creare restituire una lista pulita mentre reverse_create restituisce elenchi di elenchi? – Superpolock
puoi leggere questo per spiegazioni: http://learnyousomeerlang.com/starting-out-for-real#lists e guarda anche questi: http://stackoverflow.com/questions/3232786/how-to-concat-lists -in-erlang-without-creating-nested-lists e http://stackoverflow.com/questions/1919097/functional-programming-what-is-an-improper-list –