Set::Infinite::_recurrence.3pm

Langue: en

Autres versions - même langue

Version: 2010-05-14 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

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' occurence.

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@pucrs.br>

The recurrence generation algorithm is based on an idea from Dave Rolsky.

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