blob: 7f7320b31c3a7afe3f29a4013b4760e44181d58c [file] [log] [blame]
Iterable<(Iterable<A>, Iterable<A>)> split<A>(Iterable<A> it) => switch (it) {
Iterable<A>(isEmpty: true) => [
(Iterable<A>.empty(), Iterable<A>.empty())
],
Iterable<A>(first: var x) => () sync* {
yield (Iterable<A>.empty(), it);
for (var (ls, rs) in split(it.skip(1))) yield ([x, ...ls], rs);
}(),
};
void main() {}