Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Функційне програмування / Згортка / Процедура reduce

Тест — Згортка

Що надрукує наступна програма?

say (10, 1, 2, 3).reduce(* - *);
14
08
016
0-4

reduce згортає список зліва направо, і першим аргументом блоку завжди є результат, накопичений досі, — тут це лівий операнд -. Тож обчислюється ((10 - 1) - 2) - 3, тобто 9 - 2 - 3 = 4. Згортка в інший бік, 10 - (1 - (2 - 3)), дала б 8, а додавання замість віднімання дало б 16. На відміну від +, віднімання залежить від порядку, тож ролі двох аргументів справді мають значення.

Навігація курсом

Процедура reduce   |   Сума списку