Introduction
This chapter is about using Clojure's reduce
function and about reducing in general. By that, we mean starting with a sequence and boiling it down to a single thing. ("Reducing" is also cooking term, after all.) map
and filter
were about taking the sequence you have and turning it into the sequence you want: sequence in, sequence out. But that's not always what we want. Even simple operations on a sequence, such as calculating an average, a sum, or a maximum, cannot be directly calculated this way. That's where reduce
, as well as a wider family of functions and patterns, comes in: sequence in, something else out. It's "something else" because the result might be a number, a string, a map, or even another sequence.
In the previous chapter, we saw that functions such as map
and filter
only look at one element at a time: how should we transform this item? Should we discard this item, or keep it? This is a powerful approach because...