zip function in Prolog

:- use_module(library(lambda)). 
zip1(L1,L2,Z) :- scanl(\X^Y^_^[X,Y]^[X,Y],L1,L2,_,[_|Z]). 
zip2(L1,L2,Z) :- maplist(\X^Y^[X,Y]^[X,Y],L1,L2,Z). 

or better this one :

pair(X,Y,[X,Y]).
zip(L1,L2,Z) :- maplist(pair,L1,L2,Z).

?- zip([1,2,3],[4,5,6],Z).
Z = [[1, 4], [2, 5], [3, 6]].