Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Reductie / De routine reduce

Quiz — Reductie

Wat drukt het volgende programma af?

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

reduce vouwt de lijst van links naar rechts, en het eerste argument van het blok is altijd het resultaat tot nu toe — hier de linkeroperand van -. Het berekent dus ((10 - 1) - 2) - 3, dat wil zeggen 9 - 2 - 3 = 4. Andersom vouwen, 10 - (1 - (2 - 3)), zou 8 geven, en optellen in plaats van aftrekken zou 16 geven. Anders dan + hangt aftrekken van de volgorde af, dus de rollen van de twee argumenten doen er werkelijk toe.

Cursusnavigatie

De routine reduce   |   Tel een lijst op