adjacentDifference method

List<T> adjacentDifference([
  1. T op(
    1. T,
    2. T
    )?
])

Computes the differences between adjacent elements.

Similar to std::adjacent_difference. The first element is copied as-is, then each subsequent element is op(current, previous). Default op is -.

Implementation

List<T> adjacentDifference([T Function(T, T)? op]) {
  op ??= (T a, T b) => ((a as dynamic) - (b as dynamic)) as T;
  var result = <T>[];
  var it = iterator;
  if (!it.moveNext()) return result;

  result.add(it.current);
  var prev = it.current;
  while (it.moveNext()) {
    var val = it.current;
    result.add(op(val, prev));
    prev = val;
  }
  return result;
}