Provided by: libdatetime-set-perl_0.3900-1_all bug

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 occurrence after $x = ",
                         $recurrence->{param}[0]->( $x ), "\n";  # 235
                   print "previous occurrence before $x = ",
                         $recurrence->{param}[2]->( $x ), "\n";  # 234
               }

               {
                   my $x = 234;
                   print "next occurrence after $x = ",
                         $recurrence->{param}[0]->( $x ), "\n";  # 235
                   print "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 "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>.