|
use Set::Object qw(set);
|
|
|
|
sub powerset {
|
|
my $p = Set::Object->new( set() );
|
|
foreach my $i (shift->elements) {
|
|
$p->insert( map { set($_->elements, $i) } $p->elements );
|
|
}
|
|
return $p;
|
|
}
|
|
|
|
my $set = set(1, 2, 3);
|
|
my $powerset = powerset($set);
|
|
|
|
print $powerset->as_string, "\n";
|