Prolog GNU - оператор Univ? Объяснение этого

Итак, оператор univ. Я не совсем понимаю его.

Например, это:

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).

Что это делает? Это проверяет, верен ли другой предикат. I не понимаю, что делает "..".

Как бы вы переписали это без оператора univ?

13
задан false 5 July 2014 в 20:41
поделиться