NAME¶
Set::Infinite::_recurrence - Extends Set::Infinite with recurrence functions
SYNOPSIS¶
$recurrence = $base_set->_recurrence ( \&next, \&previous );
DESCRIPTION¶
This is an internal class used by the DateTime::Set module. The API is subject
to change.
It provides all functionality provided by Set::Infinite, plus the ability to
define recurrences with arbitrary objects, such as dates.
METHODS¶
- •
- _recurrence ( \&next, \&previous )
Creates a recurrence set. The set is defined inside a 'base set'.
$recurrence = $base_set->_recurrence ( \&next, \&previous );
The recurrence functions take one argument, and return the 'next' or the
'previous' occurrence.
Example: defines the set of all 'integer numbers':
use strict;
use Set::Infinite::_recurrence;
use POSIX qw(floor);
# define the recurrence span
my $forever = Set::Infinite::_recurrence->new(
Set::Infinite::_recurrence::NEG_INFINITY,
Set::Infinite::_recurrence::INFINITY
);
my $recurrence = $forever->_recurrence(
sub { # next
floor( $_[0] + 1 )
},
sub { # previous
my $tmp = floor( $_[0] );
$tmp < $_[0] ? $tmp : $_[0] - 1
},
);
print "sample recurrence ",
$recurrence->intersection( -5, 5 ), "\n";
# sample recurrence -5,-4,-3,-2,-1,0,1,2,3,4,5
{
my $x = 234.567;
print "next occurence after $x = ",
$recurrence->{param}[0]->( $x ), "\n"; # 235
print "previous occurence before $x = ",
$recurrence->{param}[2]->( $x ), "\n"; # 234
}
{
my $x = 234;
print "next occurence after $x = ",
$recurrence->{param}[0]->( $x ), "\n"; # 235
print "previous occurence before $x = ",
$recurrence->{param}[2]->( $x ), "\n"; # 233
}
- •
- is_forever
Returns true if the set is a single span, ranging from -Infinity to
Infinity.
- •
- _is_recurrence
Returns true if the set is an unbounded recurrence, ranging from -Infinity
to Infinity.
CONSTANTS¶
- •
- INFINITY
The "Infinity" value.
- •
- NEG_INFINITY
The "-Infinity" value.
SUPPORT¶
Support is offered through the "datetime@perl.org" mailing list.
Please report bugs using rt.cpan.org
AUTHOR¶
Flavio Soibelmann Glock <fglock@gmail.com>
The recurrence generation algorithm is based on an idea from Dave Rolsky.
COPYRIGHT¶
Copyright (c) 2003 Flavio Soibelmann Glock. All rights reserved. This program is
free software; you can distribute it and/or modify it under the same terms as
Perl itself.
The full text of the license can be found in the LICENSE file included with this
module.
SEE ALSO¶
Set::Infinite
DateTime::Set
For details on the Perl DateTime Suite project please see
<
http://datetime.perl.org>.