[ library(lists) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]

# intersection(+List1, +List2, ?Common)

Succeeds if Common unifies with the list which contains the common elements of List1 and List2.

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

## Description

Common is unified with a list which contains the common elements of List1 and List2.

The definition of this Prolog library predicate is:

    intersection([], _, []).
    intersection([Head|L1tail], L2, L3) :-
            memberchk(Head, L2),
            !,
            L3 = [Head|L3tail],
            intersection(L1tail, L2, L3tail).
    intersection([_|L1tail], L2, L3) :-
            intersection(L1tail, L2, L3).

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 in the lists.

### Modes and Determinism

- intersection(+, +, -) is det

### Fail Conditions

Fails if Common does not unify with the list which contains the common elements of List1 and List2.

### Resatisfiable

Yes.

## Examples

    Success:
       intersection([1,2],[2,3],L).     (gives L=[2]).
       intersection([a,d],[a,b,c],[a]).

    Fail:
       intersection([a,b],[a,b],[b]).

## See Also

subtract / 3, memberchk / 2, union / 3