Právě v čitelnosti je IMHO síla Pythonu... Perl je sice o drobet kompaktnější, ale právě nutnost explicitních dereferencí je něco, co by se v moderním jazyku už dávno vyskytovat nemělo. Číst Perl je díky těm operátorovým zvratkám vo držku- viz příklad, a to by se v perlu navíc správně mělo místo "@$a" psát "scalar(@{$a})" atp..
def merge(a, b):
ret = []
ia = ib = 0
while 1:
if ia == len(a):
if ib == len(b): break
ret.append(b[ib]); ib += 1
elif ib == len(b) or a[ia] < b[ib]:
ret.append(a[ia]); ia += 1
else:
ret.append(b[ib]); ib += 1
return ret
sub merge {
my ($a, $b) = @_;
my $ret = [];
my $ia = 0;
my $ib = 0;
while (1) {
if ($ia == @$a) {
last if $ib == @$b;
push @$ret, $$a[$ia++];
elsif ($ib == @$b or $$a[$ia] < $$b[$ib]) {
push @$ret, $$a[$ia++];
} else {
push @$ret, $$b[$ib++];
}
}
return $ret;
}