blob: 361c54ee58ca9c43ddeb06c3d68be18a65bbe67f [file] [log] [blame]
void main() {}
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);
}(),
};