Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Свёртка / Процедура reduce
Тест — Свёртка
Что выведет следующая программа?
say (10, 1, 2, 3).reduce(* - *);| 1 | 4 |
| 0 | 8 |
| 0 | 16 |
| 0 | -4 |
reduce сворачивает список слева направо, и
первый аргумент блока — это всегда накопленный
результат, здесь левый операнд -. Поэтому вычисляется
((10 - 1) - 2) - 3, то есть 9 - 2 - 3 = 4.
Свёртка в другую сторону, 10 - (1 - (2 - 3)), дала бы
8, а сложение вместо вычитания дало бы 16. В
отличие от +, вычитание зависит от порядка, поэтому роли
двух аргументов действительно важны.
Навигация по курсу
← Процедура reduce | Сумма списка →