zip(Pred,[IH1|IT1],[IH2|IT2],[OH|OT]):-
:-@ [Pred,IH1,IH2,OH],
zip(Pred,IT1,IT2,OT).
zip(_,_,[],[]).
zip(_,[],_,[]).
Je zřejmé, že zip(+Fun, +List1, +List2, +OutList) aplikuje predikát
zip/4 vrátí seznam s délkou kratšího z nich.
A jeden příklad použití predikátu zip/4:
?- zip(+,[1,2,3],[4,5,6],R). R = [5,7,9] Yes