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
nejprve na oba první prvky a pak rekurzivně opakuje stejnou
operaci pro zbytky obou seznamů. Pokud jsou seznamy různě dlouhé,
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