Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación concurrente / hyper y race 🆕 / Exercises / Una suma con race
Solución: Una suma con race
Aquí tienes una posible solución para la tarea.
Código
say (1..50).race.map(* ** 2).grep(* %% 2).sum;🦋 Puedes encontrar el código fuente en el archivo parallel-sum.raku.
Salida
22100Comentarios
.raceejecuta la cadena entera — elevar al cuadrado cada número y filtrar los cuadrados pares — en paralelo y, a diferencia de.hyper, no promete devolver los elementos en orden.Aquí eso no importa, porque el paso final es una suma, que no depende del orden: los cuadrados pares (
2²,4², …,50²) suman22100sin importar en qué orden lleguen. Cuando solo combinas los resultados (suma, recuento),.racees la elección natural y puede acarrear algo menos de sobrecarga que.hyper.