The true quicksort has two beautiful aspects:
- Divide and conquer: break the problem into two smaller problems.
- Partition the elements in-place.
The short Haskell example demonstrates (1), but not (2). How (2) is done may not be obvious if you don’t already know the technique!