```{index} single: reductions; List::Util function ``` ```{index} single: List::Util::reductions; Perl function ``` # reductions Like `reduce`, but also return every intermediate accumulator value. ## Synopsis ```perl my @steps = reductions { BLOCK } @list; my @running = reductions { $a + $b } 1..4; # (1, 3, 6, 10) ``` The block is called in the same way as for `reduce`: `$a` is the accumulator, `$b` is the next element. `reductions` differs in that it captures the accumulator at every step rather than just the final value. ## What you get back A list whose first element is the first input value and whose subsequent elements are each block invocation's return value in order. The last element equals what `reduce` would have returned for the same block and list. ## Examples ```perl reduce { "$a-$b" } 'a'..'d'; # 'a-b-c-d' reductions { "$a-$b" } 'a'..'d'; # ('a', 'a-b', 'a-b-c', 'a-b-c-d') ``` ```perl my @running_sum = reductions { $a + $b } @values; ``` ## Differences from upstream Fully compatible with upstream. ## See also - `reduce` — when only the final result is needed.