use strict; use warnings; use HOI::Comprehensions; use HOI::Match; sub slowsort { HOI::Match::pmatch ( 'nil' => sub { [] }, 'pivot :: unsorted' => sub { our ($x, $unsorted, $pivot); my $left = HOI::Comprehensions::comp( sub { $x }, x => $unsorted )->( sub { $x <= $pivot } ); my $right = HOI::Comprehensions::comp( sub { $x }, x => $unsorted )->( sub { $x > $pivot } ); return [ @{slowsort($left->force)}, $pivot, @{slowsort($right->force)} ]; }, )->(@_) } my $res = slowsort [3, 4, 1, 2, 5, 6]; print @$res, "\n"; #### 19:35 >perl -c 1262_SoPW.pl 1262_SoPW.pl syntax OK 19:37 >perl 1262_SoPW.pl 123456 19:37 >