One of the core functions in Clojure is
reduce
. It allows you to
build up some result based on applying a function to each value in a
collection. Clojure provides a similar function that builds up a (lazy)
sequence of intermediate values as it is performing a reduce.
This function is
reductions
.
Using reduce
to sum a collection of integers looks like this
> (reduce + 0 [1 2 3 4 5])
=> 15
whereas reductions
performing the same task will look like this
> (reductions + 0 [1 2 3 4 5])
=> (0 1 3 6 10 15)
h/t Josh Davey