Merge sort addresses sorting problems where the full dataset should not remain in memory. It divides input into smaller chunks, sorts those chunks, and merges their ordered results into one sequence. section 8.3.5
Sorting a large range
The expression `(take 10 (psort (IdRange. 0 10000)))` produces `(0 1 2 3 4 5 6 7 8 9)`, while the implementation keeps only a bounded number of chunks actively loaded.

