Từ "Lập trình Erlang" bằng cách tập thể dục Cesarini 3-2Tạo danh sách trong Erlang
Khi tôi đi qua "Lập trình Erlang" tôi gặp vấn đề về tạo danh sách lạ. Từ bài tập 3-2 tôi đã viết hai hàm tương tự.
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 ].
để tạo (3) tạo như tôi mong đợi.
bài tập3: tạo (3).
[3,2,1]
nhưng reverse_create không tạo danh sách tôi mong đợi.
bài tập3: reverse_create (3).
[[[[] | 1] | 2] | 3]
Tôi cần thay đổi điều gì để reverse_create (3) trả về [1,2,3]? Cảm ơn vì đã giải thích.
OK, đã làm ví dụ. Bất kỳ đầu mối nào tại sao hai hàm tương tự trên lại trả về các câu trả lời khác nhau như vậy? Tại sao tạo lại danh sách trong khi reverse_create trả về danh sách các danh sách? – Superpolock
bạn có thể đọc phần này để được giải thích: http://learnyousomeerlang.com/starting-out-for-real#lists và cũng xem xét những điều sau: http://stackoverflow.com/questions/3232786/how-to-concat-lists -in-erlang-không-tạo-lồng nhau-danh sách và http://stackoverflow.com/questions/1919097/functional-programming-what-is-an-improper-list –