For two lists [e1,e2,e3] and [f1,f2,f3], e1 is compared to f1. The lower (dictated by numerical ordering) is put into List3, and the process continued with the remaining input lists. 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 numerical ordering of terms as opposed to merge/3 which uses the standard ordering of terms. Duplicates are not removed. See sort/4 for a discussion of the differences between numerical and standard ordering of numeric types.
number_merge(A, B, M) is equivalent to merge(0, $=<, A, B, M).
Success: number_merge([2,4,6],[1,3,5],L). (gives L=[1,2,3,4,5,6]). number_merge([f(1),f(7)],[f(8),f(10)],L). (gives L=[f(1),f(7),f(8),f(10)]). number_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)]). number_merge([a,w],[a,b,b,r,w],L). (gives L=[a,a,b,b,r,w,w]). number_merge([f(2),f(1)],[f(3),f(8)],L). (gives L=[f(2),f(1),f(3),f(8)]). Fail: number_merge([2,4,6],[1,3,5],[1,2,3,4,5]).