Availability:built-in
Key-Value
pairs, terms whose
principal functor is (-)/2. List is sorted on Key
according to the standard order of terms (see section
4.6.1). Duplicates are not removed. Sorting is stable
with regard to the order of the
Values, i.e., the order of multiple elements that have the
same
Key is not changed.
The keysort/2
predicate is often used together with library
library(pairs)
. It can be used to sort lists on different
or multiple criteria. For example, the following predicates sorts a list
of atoms according to their length, maintaining the initial order for
atoms that have the same length.
:- use_module(library(pairs)). sort_atoms_by_length(Atoms, ByLength) :- map_list_to_pairs(atom_length, Atoms, Pairs), keysort(Pairs, Sorted), pairs_values(Sorted, ByLength).