Set::Infinite - 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. 

Mode functions: 
    $a->real;
    $a->integer;

Logic functions: 
    $logic = $a->intersects($b);
    $logic = $a->contains($b);
    $logic = $a->is_null;

Set functions: 
    $i = $a->union($b);     
    $i = $a->intersection($b);
    $i = $a->complement;
    $i = $a->complement($b);
    $i = $a->span;   

Scalar functions: 
    $i = $a->min;
    $i = $a->max;
    $i = $a->size;  

Other Set functions:
    quantize( parameters )
	    Makes equal-sized subsets.

    	$a = Set::Infinite->new([1,3]);
    	print join (" ", $a->quantize( quant => 1 ) );

    	[1..2) [2..3) [3..4)

    select( parameters )

    	Selects set members based on their ordered positions.
    	Selection is more useful after quantization.

    	freq     - default=1
    	by       - default=[0]
    	interval - default=1
    	count    - dafault=infinite

    offset ( parameters )

    	Offsets the subsets.

    	value   - default=[0,0]
    	mode    - default='offset'. Possible values are: 'offset', 'begin', 'end'.

    type($i)

    	chooses an object data type. 

    	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


Notes on Set::Infinite::Date 

	Set::Infinite::Date is a Date "plugin" for sets. 
	It is invoked by: 
    type('Set::Infinite::Date');
	  or
    type('Set::Infinite::ICal');  # *NEW* still alpha

    use Set::Infinite;
    use Set::Infinite::Quantize_Date;
    Set::Infinite->type('Set::Infinite::Date');
    Set::Infinite::Date->date_format("year-month-day");

    $a = Set::Infinite->new('2001-05-02', '2001-05-13');
    print "Weeks in $a: ", join (" ", $a->quantize(unit => 'weeks', quant => 1) );

    $a = Set::Infinite->new('09:30', '10:35');
    print "Quarters of hour in $a: ", join (" ", $a->quantize(unit => 'minutes', quant => 15) );

	Units can be years, months, days, weeks, hours, minutes, or seconds.  

AUTHOR 
    Flavio Soibelmann Glock <fglock@pucrs.br>

