Perl
sub qsort {
my $pivot = pop @_ || return;
return qsort( grep { $_ < $pivot } @_ ),
$pivot,
qsort( grep { $_ >= $pivot } @_ );
}
Haskell
qsort [] = []
qsort (p:xs) = qsort lt ++ [p] ++ qsort gteq
where
lt = [x | x <- xs, x < p]
gteq = [x | x <- xs, x >= p]
- grep { $_ < $pivot } @_ だと(代入するために)左側で待ち受けてる感が強いんだけど、
- ( grep { $_ < $pivot } @_ ) と書くとリスト内包表記に見えてきた。