For two lists [e1,e2,e3] and [f1,f2,f3], e1 is compared to f1. The lower (dictated by the standard ordering below) is put into List3, and the next element is compared to the next element in the other list. This process continues until both lists are exhausted.
In particular, this will merge two sorted lists into a sorted list.
The sort is done according to the standard ordering of terms. Duplicates are not removed. See compare/3 for this standard ordering.
Success: merge([2,4,6],[1,3,5],L). (gives L=[1,2,3,4,5,6]). merge([f(1),f(7)],[f(8),f(10)],L). (gives L=[f(1),f(7),f(8),f(10)]). merge([f(5),f(8)],[f(1),f(2),f(2),f(5),f(8)],L). (gives L=[f(1),f(2),f(2),f(5),f(5),f(8),f(8)]). merge([a,w],[a,b,b,r,w],L). (gives L=[a,a,b,b,r,w,w]). merge([f(2),f(1)],[f(3),f(8)],L). (gives L=[f(2),f(1),f(3),f(8)]). Fail: merge([2,4,6],[1,3,5],[1,2,3,4,5]).