The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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>