
append(?List1, ?List2, ?List3)

   Succeeds if List3 is the result of appending List2 to List1.



Arguments
   ?List1              List or variable.
   ?List2              List or variable.
   ?List3              List or variable.

Type
   library(lists)

Description
   Unifies List3 to the result of appending List2 to List1.  On
   backtracking append/3 gives all possible solutions for List1 and List2,
   if both are uninstantiated.

   The definition of this Prolog library predicate is:

append([],X,X).
append([X|L1],L2,[X|L3]):-
        append(L1,L2,L3).

   This predicate does not perform any type testing functions.
	

Modes and Determinism
   append(+, +, -) is det
   append(-, -, +) is multi

Fail Conditions
      Fails if List3 does not unify with the result of appending List2 to
   List1.



Resatisfiable
      Yes.

Examples
   
Success:
  append([1,2],L2,[1,2,3,4]). (gives L2=[3,4]).
  append([1,B],L2,[A,2,3,4]). (gives B=2 L2=[3,4] A=1).
  append([1,2],L2,L3).        (gives L2=_g70 L3=[1,2|_g70]).
  append([1]),[2,3]),L3).     (gives L3=[1,2,3]).

  [eclipse]: append(L1,L2,[1,2]), writeln((L1,L2)), fail.
  [] , [1, 2]
  [1] , [2]
  [1, 2] , []
  no (more) solution.
Fail:
  append(L1,[3],[1,2,3,4]).
  append(1,L2,[1,2]).




See Also
   union / 3
