The definition of this Prolog library predicate is:
union([], L, L). union([Head|L1tail], L2, L3) :- memberchk(Head, L2), !, union(L1tail, L2, L3). union([Head|L1tail], L2, [Head|L3tail]) :- union(L1tail, L2, L3tail).The following should be noted;
1. This predicate does not perform any type testing functions.
2. This predicate is not protected by ECLiPSe and may be redefined without generating a warning message.
3. This predicate works properly for set operations only, so repeated elements and variable elements should not be used.
Success: union([1,2,3],[1,3],L). (gives L=[2,1,3]). Fail: union([1,2,3,2],[1,3],[1,2,3]). % repeated elements