(phixonline)--> with javascript_semantics function power_set(sequence s) sequence powerset = {{}}, subset = {{{},0}} while length(subset) do sequence next = {} for i=1 to length(subset) do {sequence sub, integer k} = subset[i] for j=k+1 to length(s) do sequence ni = append(deep_copy(sub),s[j]) next = append(next,{ni,j}) powerset = append(powerset,ni) end for end for subset = next end while assert(length(powerset)=power(2,length(s))) return powerset end function ?power_set({1,2,3,4}) ?power_set({4,3,2,1}) ?power_set({}) ?power_set({{}})