PROLOG defining 'delete' predicate -
delete(x,[x|r],[_|r]). delete(x,[f|r],[f|s]) :- delete(x,r,s).
above definition of delete predicate, delete(x,l,r), intended delete every occurrence of x in l result r.
i had queried below, , "g2397797
". string stand for?
?- delete(1,[1,2,3,4,5],x). x = [_g2397797, 2, 3, 4, 5] .
if correct first clause , remove unnecessary anonymous variable, get:
delete_each(x, [x|l], l). delete_each(x, [y|ys], [y|zs]) :- delete_each(x, ys, zs).
this use unification, , delete each occurrence of x in list upon backtracking:
?- delete_each(a, [a,b,a,c], r). r = [b, a, c] ; r = [a, b, c] ; false.
do see how identical select/3
?
if want delete occurrences of x in list, can see answer @coder.
Comments
Post a Comment