blob: 73e8c6f7925320e6f9f1b0b726d3888dfee1cfba [file] [log] [blame]
void main() {
List<int> list = [1, 2, 3];
print(subs(list));
}
List<List<A>> subs<A>(
List<A>
list) => /*
checkingOrder={List<A>,<A>[],<A>[(), ...]},
subtypes={<A>[],<A>[(), ...]},
type=List<A>
*/
switch (list) {
[] /*space=<[]>*/ => [],
[var x, ...var xs] /*space=<[Object?, ...List<A>]>*/ => [
for (var ys in subs(xs)) ...[
[x] + ys,
ys
],
[x]
],
};