Append(?List1, ?List2, ?List3) - ECLiPSe-CLP

[ 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

Tag » Add Element In List In Prolog