So the univ operator. I don't exactly understand it.
For example this:
foo(PredList,[H|_]) :- bar(PredList,H).
foo(PredList,[_|T]) :- foo(PredList,T),!.
bar([H|_],Item) :- G =.. [H,Item],G.
bar([_|T],Item) :- bar(T,Item).
What is this doing? This looks to see if another predicate is true. I don't understand what the ".." does.
How would you rewrite this without the univ operator?