Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación funcional / Reducción / La rutina reduce

Quiz — Reducción

¿Qué imprime el programa siguiente?

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

reduce pliega la lista de izquierda a derecha, y el primer argumento del bloque es siempre el resultado obtenido hasta el momento, aquí el operando izquierdo de -. Así que calcula ((10 - 1) - 2) - 3, es decir 9 - 2 - 3 = 4. Plegar en el otro sentido, 10 - (1 - (2 - 3)), daría 8, y sumar en lugar de restar daría 16. A diferencia de +, la resta depende del orden, así que los papeles de los dos argumentos importan de verdad.

La rutina reduce   |   Sume una lista