2006/4/4, Larry Wall <[EMAIL PROTECTED]>:
> But this is all based on enumerated sets. Oddly missing are any
> Sets that are defined by rule. That would presumably take closures,
> though I suppose one can attempt to enumerate the closures that have
> to hold true and autothread through the calls to those closures...
>
> Can Russel be far behind? :-)
This is in ext/Recurrence:
use Recurrence;
# all integer numbers
$universe = Recurrence.new(
closure_next => sub { $_ + 1 },
closure_previous => sub { $_ - 1 },
:is_universe(1) );
# all even integers
$even_numbers = Recurrence.new(
closure_next => sub { 2 * int( $_ / 2 ) + 2 },
closure_previous => sub { 2 * int( ( $_ - 1 ) / 2 ) },
universe => $universe );
# all odd integers
$odd_numbers = $even_numbers.complement;
# all non-zero integers
$non_zero = Recurrence.new(
closure_next => sub ($x) { $x == -1 ?? 1 !! $x + 1 },
closure_previous => sub ($x) { $x == 1 ?? -1 !! $x - 1 },
complement_next => sub ($x) { $x < 0 ?? 0 !! Inf },
complement_previous => sub ($x) { $x > 0 ?? 0 !! -Inf },
universe => $universe );
- Flavio S. Glock