The reduce function reduces a list into a single value. Often referred to as fold or aggregate, it takes two parameters: a starting value and a function.
A function takes a running total and an element of the list as parameters and returns a value that is created by combining the elements in the list.
Unlike map, filter, and flatMap, which would return the same type, reduce changes the type. In other words, map, filter, and flatMap would take an array and provide a changed array. This is not the case with reduce as it can change an array to, for instance, a tuple or single value.
Swift provides the reduce method on sequences and has the following definition:
public func reduce<Result>(_ initialResult: Result, _ nextPartialResult: ...