Aion
view release on metacpan or search on metacpan
lib/Aion/Meta/Util.pm view on Meta::CPAN
use common::sense;
require overload;
use Scalar::Util qw//;
use Exporter qw/import/;
our @EXPORT = our @EXPORT_OK = grep {
my $x = $Aion::Meta::Util::{$_};
!ref $x
&& *{$x}{CODE}
&& !/^(_|(NaN|import)\z)/n
} keys %Aion::Meta::Util::;
# СоздаÑÑ Ð³ÐµÑÑеÑÑ
sub create_getters(@) {
my $pkg = caller;
eval "package $pkg; sub $_ {
die \"$_ is ro\" if \@_ > 1;
shift->{$_}
} 1" or die for @_;
}
lib/Aion/Types.md view on Meta::CPAN
Так как в perl ÑаÑионалÑнÑе ÑиÑла поддеÑживаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÑÐ°Ð³Ð¼Ñ `bigrat`, коÑоÑÑй вÑе ÑаÑионалÑнÑе ÑиÑла пÑевÑаÑÐ°ÐµÑ Ð² `Math::BigRat`, Ñо иÑполÑзÑеÑ...
```perl
"6/7" ~~ StrRat # -> 1
"-6/7" ~~ StrRat # -> 1
"+6/7" ~~ StrRat # -> 1
6 ~~ StrRat # -> 1
"inf" ~~ StrRat # -> 1
"+Inf" ~~ StrRat # -> 1
"NaN" ~~ StrRat # -> 1
"-nan" ~~ StrRat # -> 1
6.5 ~~ StrRat # -> 1
"6.5 " ~~ StrRat # -> ''
```
## Rat
РаÑионалÑнÑе ÑиÑла. СокÑаÑение Ð´Ð»Ñ `Object['Math::BigRat']`. ÐÐ¼ÐµÐµÑ Ð¿Ñиведение.
```perl
lib/Aion/Types.pm view on Meta::CPAN
use Aion::Meta::Util qw/subref_is_reachable/;
use Aion::Type;
use List::Util qw/all any first/;
use Exporter qw/import/;
require overload;
use Scalar::Util qw/looks_like_number reftype refaddr blessed/;
use Sub::Util qw//;
our @EXPORT = our @EXPORT_OK = grep {
*{$Aion::Types::{$_}}{CODE} && !/^(_|(NaN|import|all|any|first|looks_like_number|reftype|refaddr|blessed|subref_is_reachable)\z)/n
} keys %Aion::Types::;
# ÐбÑабаÑÑваем аÑÑибÑÑ :Isa
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $referent, @attributes) = @_;
grep { /^Isa\((.*)\)\z/s? do { _Isa($pkg, $referent, $1); 0 }: 1 } @attributes
}
sub _Isa {
lib/Aion/Types.pm view on Meta::CPAN
String representation of rational numbers.
Since in perl rational numbers are supported using the C<bigrat> pragma, which turns all rational numbers into C<Math::BigRat>, it is used in a ghost to C<Rat>.
"6/7" ~~ StrRat # -> 1
"-6/7" ~~ StrRat # -> 1
"+6/7" ~~ StrRat # -> 1
6 ~~ StrRat # -> 1
"inf" ~~ StrRat # -> 1
"+Inf" ~~ StrRat # -> 1
"NaN" ~~ StrRat # -> 1
"-nan" ~~ StrRat # -> 1
6.5 ~~ StrRat # -> 1
"6.5 " ~~ StrRat # -> ''
=head2 Rat
Rational numbers. Short for C<Object['Math::BigRat']>. Has a ghost.
use Math::BigRat;
use Math::BigFloat;
t/aion/types.t view on Meta::CPAN
#
# Так как в perl ÑаÑионалÑнÑе ÑиÑла поддеÑживаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÑÐ°Ð³Ð¼Ñ `bigrat`, коÑоÑÑй вÑе ÑаÑионалÑнÑе ÑиÑла пÑевÑаÑÐ°ÐµÑ Ð² `Math::BigRat`, Ñо иÑполÑзÑÐ...
#
::done_testing; }; subtest 'StrRat' => sub {
local ($::_g0 = do {"6/7" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"6/7" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"-6/7" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"-6/7" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"+6/7" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"+6/7" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {6 ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '6 ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"inf" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"inf" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"+Inf" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"+Inf" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"NaN" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"NaN" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"-nan" ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"-nan" ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {6.5 ~~ StrRat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '6.5 ~~ StrRat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"6.5 " ~~ StrRat}, $::_e0 = do {''}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"6.5 " ~~ StrRat # -> \'\'' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# ## Rat
#
# РаÑионалÑнÑе ÑиÑла. СокÑаÑение Ð´Ð»Ñ `Object['Math::BigRat']`. ÐÐ¼ÐµÐµÑ Ð¿Ñиведение.
#
::done_testing; }; subtest 'Rat' => sub {
( run in 0.553 second using v1.01-cache-2.11-cpan-aacf23618b3 )