inverse property

Iterable<T> inverse

The inverse of this ScalableIterable.

Example:

{Note.b, Note.a.sharp, Note.d}.inverse.toSet()
  == {Note.b, Note.c, Note.g.sharp}

Implementation

Iterable<T> get inverse sync* {
  if (isEmpty) return;
  yield first;
  var last = first;
  for (var i = 1; i < length; i++) {
    yield last = last.transposeBy(elementAt(i).interval(elementAt(i - 1)));
  }
}