#!/usr/bin/ruby
#
## The quicksort algorithm in parallel
#
func quicksort(arr {.len <= 1}) { arr }
func quicksort(arr) {
var p = arr.pop_rand;
var forks = [
quicksort.ffork(arr.grep { _ <= p }),
quicksort.ffork(arr.grep { _ > p }),
];
forks[0].wait + [p] + forks[1].wait
}
say quicksort(@(1..50) -> shuffle);