mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
26 lines
675 B
Markdown
26 lines
675 B
Markdown
# Reductions
|
|
|
|
One of the core functions in Clojure is
|
|
[`reduce`](https://clojuredocs.org/clojure.core/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`](https://clojuredocs.org/clojure.core/reductions).
|
|
|
|
Using `reduce` to sum a collection of integers looks like this
|
|
|
|
```clojure
|
|
> (reduce + 0 [1 2 3 4 5])
|
|
=> 15
|
|
```
|
|
|
|
whereas `reductions` performing the same task will look like this
|
|
|
|
```clojure
|
|
> (reductions + 0 [1 2 3 4 5])
|
|
=> (0 1 3 6 10 15)
|
|
```
|
|
|
|
h/t Josh Davey
|