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>