# ControlNotificationStream.max(by:)

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

```
ControlNotificationStream.max(by:)(by: (Self.Element, Self.Element) async throws -> Bool) -> Self.Element?
```

Returns the maximum element in the asynchronous sequence, using the given predicate as the comparison between elements.

Use this method when the asynchronous sequence's values don't conform
to `Comparable`, or when you want to apply a custom ordering to the
sequence.

The predicate must be a *strict weak ordering* over the elements. That is,
for any elements `a`, `b`, and `c`, the following conditions must hold:

- `areInIncreasingOrder(a, a)` is always `false`. (Irreflexivity)
- If `areInIncreasingOrder(a, b)` and `areInIncreasingOrder(b, c)` are
  both `true`, then `areInIncreasingOrder(a, c)` is also
  `true`. (Transitive comparability)
- Two elements are *incomparable* if neither is ordered before the other
  according to the predicate. If `a` and `b` are incomparable, and `b`
  and `c` are incomparable, then `a` and `c` are also incomparable.
  (Transitive incomparability)

The following example uses an enumeration of playing cards ranks, `Rank`,
which ranges from `ace` (low) to `king` (high). An asynchronous sequence
called `RankCounter` produces all elements of the array. The predicate
provided to the `max(by:)` method sorts ranks based on their `rawValue`:

    enum Rank: Int {
        case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king
    }

    let max = await RankCounter()
        .max { $0.rawValue < $1.rawValue }
    print(max ?? "none")
    // Prints "king"

- Parameter areInIncreasingOrder: A predicate that returns `true` if its
  first argument should be ordered before its second argument; otherwise,
  `false`.
- Returns: The sequence’s minimum element, according to
  `areInIncreasingOrder`. If the sequence has no elements, returns `nil`.

## Raises

- `Bool`
