Sorting

The :std/sort library provides sorting facilities using Olin's withdrawn SRFI-32 implementation.

To use the bindings from this module:

(import :std/sort)

sort

(sort seq less?) -> sequence

  seq   := list or vector
  less? := comparison procedure

Sorts a sequence (a list or vector) and returns a new sorted sequence, using the less? procedure to compare elements. The procedure uses merge sort for lists and heap sort for vectors, which does not produce a stable sort.

Examples:

> (sort [2 5 1] <)
(1 2 5)

sort!

(sort! seq less?) -> sequence

  seq   := list or vector
  less? := comparison procedure

Like sort, but the procedure is allowed to reuse/modify the original sequence to produce its output.

stable-sort

(stable-sort seq less?) -> sequence

  seq   := list or vector
  less? := comparison procedure

Like sort, but it uses merge sort for vectors as well, which produces a stable sort.

stable-sort!

(stable-sort! seq less?) -> sequence

  seq   := list or vector
  less? := comparison procedure

Like stable-sort, but the procedure is allowed to reuse/modify the original sequence to produce its output.