*Manual Reference Pages - * SET::INFINITE::BASIC (3)
.ds Aq ’
### NAME
Set::Infinite::Basic - Sets of intervals
6
=head1 SYNOPSIS
`
` `
use Set::Infinite::Basic;
$set = Set::Infinite::Basic->new(1,2); # [1..2]
print $set->union(5,6); # [1..2],[5..6]
`
### CONTENTS
### DESCRIPTION
Set::Infinite::Basic is a Set Theory module for infinite sets.
It works on reals, integers, and objects.
This module does not support recurrences. Recurrences are implemented in Set::Infinite.
### METHODS
#### empty_set
Creates an empty_set.
If called from an existing set, the empty set inherits
the type and density characteristics.
#### universal_set
Creates a set containing all possible elements.
If called from an existing set, the universal set inherits
the type and density characteristics.
#### until
Extends a set until another:
`
` `
0,5,7 -> until 2,6,10
`
gives
`
` `
[0..2), [5..6), [7..10)
`
Note: this function is still experimental.
#### copy
#### clone
Makes a new object from the object’s data.
#### Mode functions:
`
``
$set = $set->real;
$set = $set->integer;
`
#### Logic functions:
`
``
$logic = $set->intersects($b);
$logic = $set->contains($b);
$logic = $set->is_null; # also called "is_empty"
`
#### Set functions:
`
``
$set = $set->union($b);
$set = $set->intersection($b);
$set = $set->complement;
$set = $set->complement($b); # can also be called "minus" or "difference"
$set = $set->symmetric_difference( $b );
$set = $set->span;
result is (min .. max)
`
#### Scalar functions:
`
``
$i = $set->min;
$i = $set->max;
$i = $set->size;
$i = $set->count; # number of spans
`
#### Overloaded Perl functions:
`
``
print
sort, <=>
`
#### Global functions:
`
``
separators(@i)
chooses the interval separators.
default are [ ] ( ) .. ,.
INFINITY
returns an Infinity number.
NEG_INFINITY
returns a -Infinity number.
iterate ( sub { } )
Iterates over a subroutine.
Returns the union of partial results.
first
In scalar context returns the first interval of a set.
In list context returns the first interval of a set, and the
tail.
Works in unbounded sets
type($i)
chooses an object data type.
default is none (a normal perl SCALAR).
examples:
type(Math::BigFloat);
type(Math::BigInt);
type(Set::Infinite::Date);
See notes on Set::Infinite::Date below.
tolerance(0) defaults to real sets (default)
tolerance(1) defaults to integer sets
real defaults to real sets (default)
integer defaults to integer sets
`
#### Internal functions:
`
``
$set->fixtype;
$set->numeric;
`
### CAVEATS
`
``
$set = Set::Infinite->new(10,1);
Will be interpreted as [1..10]
$set = Set::Infinite->new(1,2,3,4);
Will be interpreted as [1..2],[3..4] instead of [1,2,3,4].
You probably want ->new([1],[2],[3],[4]) instead,
or maybe ->new(1,4)
$set = Set::Infinite->new(1..3);
Will be interpreted as [1..2],3 instead of [1,2,3].
You probably want ->new(1,3) instead.
`
### INTERNALS
The internal representation of a *span* is a hash:
`
` `
{ a => start of span,
b => end of span,
open_begin => 0 the span starts in a
1 the span starts after a
open_end => 0 the span ends in b
1 the span ends before b
}
`
For example, this set:
`
` `
[100..200),300,(400..infinity)
`
is represented by the array of hashes:
`
` `
list => [
{ a => 100, b => 200, open_begin => 0, open_end => 1 },
{ a => 300, b => 300, open_begin => 0, open_end => 0 },
{ a => 400, b => infinity, open_begin => 0, open_end => 1 },
]
`
The *density* of a set is stored in the `tolerance` variable:
`
` `
tolerance => 0; # the set is made of real numbers.
tolerance => 1; # the set is made of integers.
`
The `type` variable stores the *class* of objects that will be stored in the set.
`
` `
type => DateTime; # this is a set of DateTime objects
`
The *infinity* value is generated by Perl, when it finds a numerical overflow:
`
` `
$inf = 100**100**100;
`
### SEE ALSO
`
``
Set::Infinite
`
### AUTHOR
`
``
Flavio S. Glock <fglock@gmail.com>
`
*perl v5.20.3* | SET::INFINITE::BASIC (3) | *2010-04-26* |
Visit the GSP FreeBSD Man Page Interface. Output converted with manServer 1.07. |