Entonces el operador univ. No lo entiendo exactamente.Prolog GNU - Univ operator? Explicación de eso
Por ejemplo esto:
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).
Lo que está haciendo esto? Esto busca ver si otro predicado es verdadero. No entiendo lo que hace el "...".
¿Cómo reescribiría esto sin el operador univ?
+1 para preguntar cómo reescribir sin univ. Por cierto, hay predicados ISO functor/3 y arg/3 que podrían hacer el trabajo en algunos casos, y deberían ser preferidos, pero no estoy seguro de que siempre puedan usarse. – Kaarel
@Kaarel, +1. Actualizado mi respuesta. –