Continuing the discussion from A new binary-search attempt:

I was thinking of some extension from the binary search on collections that can work for sequences. Then I came up with checking if a sequence matches a given partition (with a partitioning predicate) or sort (with a comparison predicate and monotonic flag). These match the `std::is_partitioned`

, `std::is_sorted`

, and `std::is_sorted_until`

functions from C++.

The code is in a gist. `Sequence.partitionFailure(by:)`

and `Sequence.sortFailure(monotonic: by:)`

return the two elements surrounding where a partition or sorting predicate fails. The `Sequence.isPartitioned(by:)`

and `Sequence.isSorted(monotonically: by:)`

are the Boolean-return variants. The sort checking methods have a flag whether consecutive elements being equal is an error or not.