Quick Navigator

 Search Site Miscellaneous Server Agreement Year 2038 Credits

# 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]

```

### 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.

#### 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

```

```

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].
or maybe ->new(1,4)

\$set = Set::Infinite->new(1..3);
Will be interpreted as [1..2],3 instead of [1,2,3].

```

### 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;

```

```

Set::Infinite

```

### AUTHOR

```

Flavio S. Glock <fglock@gmail.com>

```
Search for    or go to Top of page |  Section 3 |  Main Index

 perl v5.20.3 SET::INFINITE::BASIC (3) 2010-04-26

Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.