X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FSub%2FNary.pm;h=21f53b0be6480a9b9e308d6677a783b533f13afa;hb=93afac3588786704db6d9549d3bf469ba1b5598d;hp=aa2fc87359590e8ba275516f0f084291d8b90d4f;hpb=3271ef4bff5871bc6aa2d90537f97f177cbacc2a;p=perl%2Fmodules%2FSub-Nary.git diff --git a/lib/Sub/Nary.pm b/lib/Sub/Nary.pm index aa2fc87..21f53b0 100644 --- a/lib/Sub/Nary.pm +++ b/lib/Sub/Nary.pm @@ -6,7 +6,6 @@ use strict; use warnings; use Carp qw/croak/; -use List::Util qw/reduce sum/; use B qw/class ppname svref_2object OPf_KIDS/; @@ -178,62 +177,6 @@ sub name ($) { $n eq 'null' ? substr(ppname($_[0]->targ), 3) : $n } -sub zero ($) { - my $r = $_[0]; - return 1 unless defined $r; - return $r eq '0' unless ref $r; - return $r->{0} and 1 == scalar keys %$r; -} - -sub list ($) { - my $r = $_[0]; - return 0 unless defined $r; - return $r eq 'list' unless ref $r; - return $r->{list} and 1 == scalar keys %$r; -} - -sub count ($) { - my $r = $_[0]; - return 0 unless defined $r; - return 1 unless ref $r; - sum values %$r; -} - -sub normalize ($) { - my $r = $_[0]; - return unless defined $r; - return { 0 => 1 } unless keys %$r; - my $total = count $r; - return { map { $_ => $r->{$_} / $total } keys %$r }; -} - -sub scale { - my ($c, $r) = @_; - return unless defined $r; - return (ref $r) ? { map { $_ => $r->{$_} * $c } keys %$r } : { $r => $c }; -} - -sub combine { - reduce {{ - my %res; - my $la = delete $a->{list}; - my $lb = delete $b->{list}; - if (defined $la || defined $lb) { - $la ||= 0; - $lb ||= 0; - $res{list} = $la + $lb - $la * $lb; - } - while (my ($ka, $va) = each %$a) { - $ka = int $ka; - while (my ($kb, $vb) = each %$b) { - my $key = $ka + int $kb; - $res{$key} += $va * $vb; - } - } - \%res - }} map { (ref) ? $_ : { $_ => 1 } } grep defined, @_; -} - sub power { my ($p, $n, $c) = @_; return unless defined $p; @@ -249,13 +192,6 @@ sub power { return $r; } -sub add { - reduce { - $a->{$_} += $b->{$_} for keys %$b; - $a - } map { (ref) ? $_ : { $_ => 1 } } grep defined, @_; -} - my %ops; $ops{$_} = 1 for scalops; @@ -652,7 +588,7 @@ C isn't specialized when encountered in the optree. L 5.8.1. -L (standard since perl 5), L (since perl 5.005), L (since perl 5.006) and L (since perl 5.007003). +L (standard since perl 5), L (since perl 5.005) and L (since perl 5.006). =head1 AUTHOR