[ library(lists) | Reference Manual | Alphabetic Index ]

# union(+List1, +List2, ?Union)

Succeeds if Union is the list which contains the union of elements in List1 and those in List2.

+List1
  List.
+List2
  List.
?Union
  List or variable.

## Description

Used to create the list of elements in List1 and not in List2, added to those in List2.

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).

This predicate does not perform any type testing functions.

This predicate works properly for set operations only, so repeated elements and variable elements should not be used.

### Modes and Determinism

- union(+, +, -) is det

### Fail Conditions

Fails if Union does not unify with the list which contains the union of elements in List1 and those in List2.

### Resatisfiable

No.

## Examples

    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

## See Also

subtract / 3, intersection / 3