Iterable<T> slices(int sliceLength) sync* { for (var index = 0; index < length; index += sliceLength) { yield slicer(index, min(index + sliceLength, length)); } }