Функции высшего порядка - Erlang - Ответ 9935160

Здравствуйте, пытаясь разобраться в вашем ответе возникли некоторые вопросы.

Шестая строка начинается с функции свертки F которая вычисляет в списке первый элемент X и остаток XS.

Вызывая эту же функцию (рекурсию reduce2) не понимаю что происходит при добавлении безымянной функции fun(Y,Z).

Пожалуйста объясните, что они означают?

Или X это Y и XS является Z?

Тогда мы в нашей новорекурсивно-безымянной функцией fun (Y,Z) вводим значения? какие? [1,2,3]?

Далее мы по моему предположению вызываем нами введенные данные в функции свертки F?

Остаток списка XS.

Получается остаток списка является [2,3]?

F(A,X)- результат выполнения функции F который станет новым значением A в следующей рекурсии.

Получается мы "прогнали" нашу рекурсию и оставшаяся последняя голова X нашего списка становится новым значением A?

Левая свертка

В моем примере

в следующей ссылке

lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]) (как левоассоциативная свертка) аналогична моему примеру reduce2(fun(Y,Z)-> F(Y,Z) end, XS, F(A,X)). В чем проявляется изменение аргументов.

Спасибо.

Вернуться к обсуждению:

Функции высшего порядка Erlang