Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Funkcionālā programmēšana / Samazināšana / Procedūra reduce
Viktorīna — Samazināšana
Ko izdrukā šī programma?
say (10, 1, 2, 3).reduce(* - *);| 1 | 4 |
| 0 | 8 |
| 0 | 16 |
| 0 | -4 |
reduce saloka sarakstu no kreisās uz labo, un bloka
pirmais arguments vienmēr ir līdzšinējais rezultāts —
šeit tas ir - kreisais operands. Tātad tiek aprēķināts
((10 - 1) - 2) - 3, tas ir, 9 - 2 - 3 = 4.
Salokot otrādi, 10 - (1 - (2 - 3)), iznāktu 8,
un saskaitot atņemšanas vietā — 16. Atšķirībā no
+ atņemšana ir atkarīga no secības, tāpēc abu argumentu
lomas tiešām ir svarīgas.