// first the initial list is
transformed to a list of 1-element
// lists, then those lists are merged
repeatedly
merge_sort(List) = merge_repeatedly(
map((X) => [X], List ) );
// merge_repeatedly merges pairs in a
list of lists until there
// is only one list left.
merge_repeatedly([A]) => A; // only one
list left
merge_repeatedly(Lists) => //
more than one list left
merge_repeatedly( merge_pairs(Lists) );