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 spanmy $forever = Set::Infinite::_recurrence->new(Set::Infinite::_recurrence::NEG_INFINITY,Set::Infinite::_recurrence::INFINITY);my $recurrence = $forever->_recurrence(sub { # nextfloor( $_[0] + 1 )},sub { # previousmy $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 occurrence after $x = ",$recurrence->{param}[0]->( $x ), "\n"; # 235print "previous occurrence before $x = ",$recurrence->{param}[2]->( $x ), "\n"; # 234}{my $x = 234;print "next occurrence after $x = ",$recurrence->{param}[0]->( $x ), "\n"; # 235print "previous occurrence 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 "[email protected]" mailing list.
Please report bugs using rt.cpan.org
AUTHOR
Flavio Soibelmann Glock <[email protected]>
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>.