# ControlNotificationStream.reduce(_:_:)

- **Module:** ControlNotificationStream
- **Package:** libtmux-swift
- **Language:** Swift
- **Kind:** method
- **Page:** https://libtmux.org/reference/swift/controlnotificationstream-reduce(_-_-)/

```
ControlNotificationStream.reduce(_:_:)(initialResult: Result, nextPartialResult: (Result, Self.Element) async throws -> Result) -> Result
```

Returns the result of combining the elements of the asynchronous sequence using the given closure.

Use the `reduce(_:_:)` method to produce a single value from the elements of
an entire sequence. For example, you can use this method on an sequence of
numbers to find their sum or product.

The `nextPartialResult` closure executes sequentially with an accumulating
value initialized to `initialResult` and each element of the sequence.

In this example, an asynchronous sequence called `Counter` produces `Int`
values from `1` to `4`. The `reduce(_:_:)` method sums the values
received from the asynchronous sequence.

    let sum = await Counter(howHigh: 4)
        .reduce(0) {
            $0 + $1
        }
    print(sum)
    // Prints "10"

- Parameters:
  - initialResult: The value to use as the initial accumulating value.
    The `nextPartialResult` closure receives `initialResult` the first
    time the closure runs.
  - nextPartialResult: A closure that combines an accumulating value and
    an element of the asynchronous sequence into a new accumulating value,
    for use in the next call of the `nextPartialResult` closure or
    returned to the caller.
- Returns: The final accumulated value. If the sequence has no elements,
  the result is `initialResult`.

## Raises

- `Result`
