Создание списка в Erlang

Из «Программирования на Erlang» Чезарини, упражнение 3-2

Проходя через «Программирование на Erlang», я получаю странные проблемы с созданием списков. Из упражнения 3-2 я написал две похожие функции.

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 ].

поэтому create (3) генерирует, как я ожидал.

упражнение3: create (3).
[3,2,1]

но reverse_create не создает список, который я ожидал.

упражнение3: reverse_create (3).
[[[[] | 1] | 2] | 3]

Что мне нужно изменить, чтобы reverse_create (3) возвращал [1,2,3]? Спасибо за объяснение.

5
задан Greg Hewgill 15 September 2012 в 03:06
поделиться