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

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -