sort/2

Module: builtins

sort/2 — sorts a list of terms
keysort/2 — sorts a list of Key-Data pairs

FORMS

sort(List, SortedList)

keysort(List, SortedList)

DESCRIPTION

sort/2 sorts the List according to the standard order. Identical elements, as defined by ==/2, are merged, so that each element appears only once in SortedList.

keysort/2 expects List to be a list of terms of the form: Key-Data. Each pair is sorted by the Key alone. Pairs with duplicate Keys will not be removed from SortedList.

A merge sort is used internally by these predicates at a cost of at most N(log N) where N is the number of elements in List.

EXAMPLES

The following examples illustrate the use of sort/2 and keysort/2:

?- sort([orange,apple,orange,tangelo,grape],X).
X = [apple,grape,orange,tangelo]
yes.

?- keysort([warren-davidh, bowen-kenneth,
            warren-davids, bowen-david,
            burger-warren], X).
X = [bowen-kenneth,bowen-david,burger-warren,
     warren-davidh,warren-davids]
yes.

The following example shows the way structures with the same principal functor are sorted:

?- sort([and(a,b,c), and(a,b,a,b), and(a,a), and(b)],Sorted).
Sorted = [and(a,a),and(a,b,a,b),and(a,b,c),and(b)]
yes.

SEE ALSO