X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FSub%2FNary.pm;h=d5a96452a1418f7a0e3382d3e9c32d7ae33151f9;hb=462a647c8b471a029c5dc2527bd4b78e64d93cee;hp=f538fc7c9eddbe327daa52c6f27630a76285b44d;hpb=2055b2f6d5f450e5e902c9751ddffe002ef5c8d1;p=perl%2Fmodules%2FSub-Nary.git diff --git a/lib/Sub/Nary.pm b/lib/Sub/Nary.pm index f538fc7..d5a9645 100644 --- a/lib/Sub/Nary.pm +++ b/lib/Sub/Nary.pm @@ -178,55 +178,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 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;