Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Concurrent programmeren / hyper en race 🆕 / Exercises / Een som met race
Oplossing: Een som met race
Hier is een mogelijke oplossing voor de taak.
Code
say (1..50).race.map(* ** 2).grep(* %% 2).sum;🦋 Je kunt de broncode vinden in het bestand parallel-sum.raku.
Uitvoer
22100Opmerkingen
.racedraait de hele keten — elk getal kwadrateren en op de even kwadraten filteren — parallel, en belooft, anders dan.hyper, niet de elementen op volgorde terug te geven.Dat is hier prima omdat de laatste stap een som is, die van volgorde onafhankelijk is: de even kwadraten (
2²,4², …,50²) tellen op tot22100, in welke volgorde ze ook aankomen. Wanneer je de resultaten alleen combineert (som, aantal), is.racede natuurlijke keuze en kan het iets minder overhead meebrengen dan.hyper.