Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione funzionale / Riduzione / La routine reduce

Quiz — Riduzione

Cosa stampa il programma seguente?

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

reduce ripiega l’elenco da sinistra a destra, e il primo argomento del blocco è sempre il risultato accumulato finora — qui l’operando sinistro di -. Quindi calcola ((10 - 1) - 2) - 3, cioè 9 - 2 - 3 = 4. Ripiegando nell’altro verso, 10 - (1 - (2 - 3)), si otterrebbe 8, e sommando invece di sottrarre si otterrebbe 16. A differenza di +, la sottrazione dipende dall’ordine, quindi i ruoli dei due argomenti contano davvero.

La routine reduce   |   Sommate una lista