This predicate can be used to select an element from a list, delete an element or insert it.
The definition of this Prolog library predicate is:
select(A, [A|B], B).
select(A, [B, C|D], [B|E]) :-
select(A, [C|D], E).
This predicate does not perform any type testing functions.
Success:
[eclipse]: select(X,[1,M,X],L), writeln((M,X,L)), fail.
_g66 , 1 , [_g66, 1]
_g66 , _g66 , [1, _g66]
_g66 , _g72 , [1, _g66]
no (more) solution.
[eclipse]: select(3,[1,3,5,3],L).
L = [1, 5, 3] More? (;)
L = [1, 3, 5]
yes.
[eclipse]: select(X,L,[a,b]), writeln((X,L)), fail.
_g66 , [_g66, a, b]
_g66 , [a, _g66, b]
_g66 , [a, b, _g66]
no (more) solution.
select(X,[1,2],L). (gives X=1 L=[2]; X=2 L=[1]).
Fail:
select(1,[1,2,1,3],[2,3]).