// 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) );