CXC-Number
view release on metacpan or search on metacpan
lib/CXC/Number/Sequence.pm view on Meta::CPAN
package CXC::Number::Sequence;
# ABSTRACT: Numerical Sequence Generation
use v5.28;
use POSIX ();
use CXC::Number::Sequence::Types qw( Sequence );
use CXC::Number::Sequence::Failure -all;
use CXC::Number::Sequence::Utils qw( load_class );
use Moo;
use experimental 'signatures';
our $VERSION = '0.13';
use namespace::clean;
use MooX::StrictConstructor;
# subclass should define
has _raw_elements => (
is => 'lazy',
init_arg => 'elements',
isa => Sequence,
required => 1,
coerce => 1,
);
sub _convert ( $self, $bignum ) {
require Ref::Util;
return Ref::Util::is_plain_arrayref( $bignum )
? [ map { $_->numify } $bignum->@* ]
: $bignum->numify;
}
sub elements ( $self ) {
$self->_convert( $self->_raw_elements );
}
sub nelem ( $self ) {
scalar $self->_raw_elements->@*;
}
sub spacing ( $self ) {
my $elements = $self->_raw_elements;
my @spacing = map { $elements->[$_] - $elements->[ $_ - 1 ] } 1 .. ( $self->nelem - 1 );
return $self->_convert( \@spacing );
}
sub min ( $self ) {
return $self->_convert( $self->_raw_elements->[0] );
}
( run in 0.577 second using v1.01-cache-2.11-cpan-39bf76dae61 )