id | lesson | title | layout | class | preview_image | preview_image_alt |
---|---|---|---|---|---|---|
accumulator |
25 |
Reactive Programming - Operators and functions (Part 2) |
default |
post |
accumulator/content_preview.jpg |
accumulator function |
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 onevalue 2
- and returns one
new value
- 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.
ord
w
⟶word
This function has no memory
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
value
⟶count + 1
This function only increments the
accumulationcount
- 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.