In Part 1, you’ve learned:
- Some operators may accept functions as arguments. These functions don’t have to work with the input or the output stream. The operators do.
- How you label a function (eg. “project” or “predicate” function) depends on how you use it. A function is not a project or predicate function in itself.
Today we focus on functions used as accumulator functions.
A function that:
- takes one
value 1 and one
- and returns one
- where value 1 and new value are of the same type
may be used as an accumulator function with the scan and reduce operators. In this case,
value 1 and
new value are often called “accumulation” or “acc”.
Despite the names accumulator and accumulation, accumulator functions don’t store the result “for later use”. The operators do save the result. They will eventually give it back to their accumulator function. This is why accumulator functions need to take an accumulation as an argument.
This function has no memory
Ignore the value
Even if a function is used as an accumulator function, it doesn’t have to “accumulate” the two input values. It can ignore the second argument:
count + 1
This function only increments the
- An accumulator function returns a value of the same type as its first argument.
- It can ignore its second argument or accumulate it with the first one.
- It doesn’t have to remember the result.
project vs predicate
reduce vs scan