NAME
Set::Infinite - Perl extension for Sets of intervals
SYNOPSIS
use Set::Infinite;
$a = Set::Infinite->new(1,2);
print $a->union(5,6);
DESCRIPTION
Set::Infinite is a Set Theory module for infinite sets.
It works on strings, reals or integers. You can provide your own objects or let it make them for you using the `type'.
It works very well on dates, providing schedule checks (intersections) and unions.
EXPORT
None by default.
USAGE
$a = Set::Infinite->new();
$a = Set::Infinite->new(1);
$a = Set::Infinite->new(1,2);
$a = Set::Infinite->new($b);
$a = Set::Infinite->new([1], [1,2], [$b]);
Mode functions:
$a->real;
$a->integer;
Logic functions:
$logic = $a->intersects($b);
$logic = $a->contains($b);
$logic = $a->is_null;
Sets functions:
$i = $a->union($b);
$i = $a->intersection($b);
$i = $a->complement;
$i = $a->complement($b);
$i = $a->span;
result is INTERVAL, (min .. max)
$a->add($b);
This is a short for:
$a = $a->union($b);
Scalar functions:
$i = $a->min;
$i = $a->max;
$i = $a->size;
Perl functions:
@b = sort @a;
print $a;
Global functions:
separators(@i)
chooses the interval separators.
default are [ ] ( ) '..' ','.
null($i)
chooses 'null' name. default is 'null'
infinite($i)
chooses 'infinite' name. default is 'inf'
infinite
returns an 'infinite' number.
minus_infinite
returns '-infinite' number.
null
returns 'null'.
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');
Note: Set::Infinite::Date requires HTTP:Date and Time::Local
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:
$a->cleanup;
CAVEATS
$a = Set::Infinite->new(1,2,3,4);
Invalid: ",3,4" will be ignored. Use [1,2],[3,4] instead.
$a = Set::Infinite->new(1..2);
Invalid: "1..2" will be ignored. Use [1,2] instead.
TODO
Make a private mode for `type'
Make a global mode for `open_*'
Create a `dirty' variable so it knows when to cleanup.
Find out how to accelerate `type' mode.
use `isa' to test paramenter types
AUTHOR
Flavio Soibelmann Glock <fglock@pucrs.br>