Ethiopian multiplication: Difference between revisions

→‎{{header|Perl 6}}: add a more idiomatic version
(Updated D code)
(→‎{{header|Perl 6}}: add a more idiomatic version)
Line 1,898:
}
return $r;
}</lang>
More succinctly using implicit typing, primed lambdas, and an infinite loop:
<lang perl6>my &halve = * div= 2;
my &double = * *= 2;
my &even = * %% 2;
 
sub ethiopicmult {
my ($a,$b) = @_;
my $r;
loop {
even $a or $r += $b;
halve $a or return $r;
double $b;
}
}</lang>
 
Anonymous user