*powerset = pipeline( map_c { [ [$_], [] ] }, # step 1 \&combos, # step 2 map_c { map [ map @$_, @$_ ], @$_ } # step 3 ); say powerset( 1, 2 ); # [1,2] [1] [2] [] say powerset(qw( a b c )); # ['a','b','c'] ['a','b'] ['a','c'] ['a'] # ['b','c'] ['b'] ['c'] []