[ library(lists) | Reference Manual | Alphabetic Index ]
append(?List1, ?List2, ?List3)
Succeeds if List3 is the result of appending List2 to List1.
- ?List1
- List or variable.
- ?List2
- List or variable.
- ?List3
- List or variable.
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=L2 L3=[1,2|L2]).
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