Set::Scalar::Base - base class for Set::Scalar



SUPPORTED PLATFORMS

This module is not included with the standard ActivePerl distribution. It is available as a separate download using PPM.

NAME

Set::Scalar::Base - base class for Set::Scalar


SYNOPSIS

    use Set::Scalar;
    $s = Set::Scalar->new;
    $s->insert('a', 'b');
    $s->delete('b');
    $t = Set::Scalar->new('x', 'y', $z);


DESCRIPTION

Creating

    $s = Set::Scalar->new;
    $s = Set::Scalar->new(@members);
    $t = $s->clone;

Modifying

    $s->insert(@members);
    $s->delete(@members);
    $s->invert(@members); # insert if hasn't, delete if has

Displaying

    print $s, "\n";

The display format of a set is the members of the set separated by spaces and enclosed in parentheses ().

You can even display recursive sets.

Querying

    @members  = $s->members;
    @elements = $s->elements; # alias for members
    $size = $s->size;
    if ($s->member($member)) { ...
    $s->element  # alias for member
    $s->has      # alias for member
    $s->contains # alias for member
    $s->is_null
    $s->is_universal
    $s->null     # the null set
    $s->universe # the universe of the set

Deriving

    $u = $s->union($t);
    $i = $s->intersection($t);
    $d = $s->difference($t);
    $e = $s->symmetric_difference($t);
    $v = $s->unique($t);
    $c = $s->complement;

These methods have operator overloads:

    $u = $s + $t; # union
    $i = $s * $t; # intersection
    $d = $s - $t; # difference
    $e = $s % $t; # symmetric_difference
    $v = $s / $t; # unique
    $c = -$s;     # complement

Comparing

    $eq = $s->is_equal($t);
    $dj = $s->is_disjoint($t);
    $pi = $s->is_properly_intersecting($t);
    $ps = $s->is_proper_subset($t);
    $pS = $s->is_proper_superset($t);
    $is = $s->is_subset($t);
    $iS = $s->is_superset($t);
    $cmp = $s->compare($t);

The compare method returns a string from the following list: ``equal'', ``disjoint'', ``proper subset'', ``proper superset'', ``proper intersect'', and in future, ``disjoint universes''.

These methods have operator overloads:

    $eq = $s == $t; # is_equal
    $dj = $s != $t; # is_disjoint
    # No operator overload for is_properly_intersecting.
    $ps = $s < $t;  # is_proper_subset
    $pS = $s > $t;  # is_proper_superset
    $is = $s <= $t; # is_subset
    $iS = $s >= $t; # is_superset
    $cmp = $s <=> $t;


AUTHOR

Jarkko Hietaniemi <jhi@iki.fi>

 Set::Scalar::Base - base class for Set::Scalar