Operators and functions - Part 2

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.

Accumulate values

Today we focus on functions used as accumulator functions.

A function that:

  • takes one value 1 and one value 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 wword

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 valuecount + 1

This function only increments the
accumulation count

Summary

  • 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.

See also


project vs predicate


reduce vs scan

Subscribe to reactive.how newsletter

Receive my latest news, tips and animations:

Learn Reactive Programming and stay up-to-date:
Cédric Soulas

Freelance Developer Advocate. Motion graphics with code. JavaScript and Elm. cedricsoulas.com