##
multi sub sum () returns Int { 0 }
multi sub sum (*$x, *@xs) returns Int { $x + sum(@xs) }
multi sub length () returns Int { 0 }
multi sub length (*$x, *@xs) returns Int { 1 + length(@xs) }
####
sub sum {
return 0 unless @_;
my ($h, @t) = @_;
return $h + sum(@t);
}
sub length {
return 0 unless @_;
shift;
return 1 + length(@_);
}