everyCombination<T> function

Iterable<Iterable<T>> everyCombination<T>(
  1. Iterable<Iterable<T>> lists
)

Implementation

Iterable<Iterable<T>> everyCombination<T>(Iterable<Iterable<T>> lists) sync* {
  if (lists.length == 1) {
    yield* lists.first.map((e) => [e]);
    return;
  }

  for (final element in lists.first) {
    yield* everyCombination(lists.skip(1)).map((e) => [element, ...e]);
  }
}