Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Funktionale Programmierung / Reduktion / Die Routine reduce

Quiz — Reduktion

Was gibt das folgende Programm aus?

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

reduce faltet die Liste von links nach rechts, und das erste Argument des Blocks ist stets das bisherige Ergebnis — hier der linke Operand von -. Es berechnet also ((10 - 1) - 2) - 3, also 9 - 2 - 3 = 4. Andersherum gefaltet, 10 - (1 - (2 - 3)), ergäbe 8, und Addieren statt Abziehen ergäbe 16. Anders als + hängt das Abziehen von der Reihenfolge ab, die Rollen der beiden Argumente sind also wirklich wichtig.

Kursnavigation

Die Routine reduce   |   Eine Liste summieren