Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding Difference Lists

Tags:

People also ask

What are difference lists in Prolog?

Another implementation in the logic programming language Prolog uses unification variables. A difference list is a pair OpenList-Hole, where the first element OpenList is a list containing an unbound unification variable (hole) and the second element Hole is a reference to the hole.

How do you find the difference between two lists in Python?

Method 6: Use symmetric_difference to Find the Difference Between Two Lists in Python. The elements that are either in the first set or the second set are returned using the symmetric_difference() technique. The intersection, unlike the shared items of the two sets, is not returned by this technique.

What is a fast way of finding the difference between 2 Python lists with 10 million items in each *?

Use set. difference() to Find the Difference Between Two Lists in Python.


I'm trying to understand difference lists in Prolog, but I'm struggling to actually implement one properly, everytime I try to do it, I get a list of lists, but that's not what I want. I'm trying to implement an append predicate, but having little luck so far. Few attempts, all of which don't work.

app(X, Y, Z) :- Z = [X|Y].

?- app([a,b,c], [z], Z).
Z = [[a,b,c],z].

OR

app(X, Y, Z) :- Z = [X|Hole], Hole = Y.

Same results as the first one, (they do seem to be basically the same). I have an example in a book that does work (although it's not a predicate), and I don't understand the difference. X becomes instantiated to the proper answer [a,b,c,z], how is that much different than my second example?

X = [a,b,c|Y], Y = [z].

What am I missing? Thanks.