This is because the list view in the prolog is a datastructure tree like this.
This is the top of the node - this is the “point”, on the left is the head, and then again the point on the right if the tail is not empty and the head is on the left and the “point” on the right hand. When you do this, you simply create a predicate (well, not an exact predicate, but sometimes it is necessary, as I give an example): suppose I write:
V=..[somefunctor,X,Y,Z]
Then it will automatically construct the predicate as follows:
somefunctor(X,Y,Z).
? , : predicate(somefunctor,term,term2,term3)
: predicate(X,Y,Z,T)
, , X, Y,Z,T
. , , , : X(Y,Z,T)
, , , , V =.. [X, Y, Z, T], X , , - : V = somefunctor(term,term2,term3)
, . , :
call(V) where `call/1` is a metapredicate and `V=..` is a not logical predicate.