Set operations using unordered lists
#!/usr/bin/perl -w
sub printset {
print "{\n";
foreach $e (@_) { print "$e\n"; }
print "}\n";
}
sub member {
my($x, @s) = @_;
my($e);
foreach $e (@s) {
if ($e eq $x) { return 1; }
}
return 0;
}
sub add_element {
my($x, @s) = @_;
if ( member( $x, @s )) { return @s; }
else {
push @s, $x;
return @s;
}
}
sub remove_element {
my($x, @s) = @_;
my($e);
my(@r) = ();
foreach $e (@s) {
if ($e ne $x) { push @r, $e; }
}
return @r;
}
sub union {
my(@s) = ();
my($e);
foreach $e (@_) {
@s = add_element( $e, @s );
}
return @s;
}