maplist/3: applies a function of one argument to each element of a list ?- maplist(inc,[2,3],L). L = [3,4] ?- maplist(square,[2,3],L). L = [4,9] inc(N,R):- R is N + 1. square(N,R):- R is N * N. mymap(F,[],[]). mymap(F,[H|T],[R|RT]):- R is F(H),mymap(F,T,RT).
maplist/4 for two lists ?- maplist(plus,[1,3],[4,6],R). R = [5,9]. ?- add_vectors([1,3],[4,6],R). R = [5,9]. plus(X,Y,Z):- Z is X + Y. add_vectors(V1,V2,R):- mapcar1(plus,V1,V2,R). mymap(F,[],[],[]). mymap(F,[H1|T1],[H2|T2],[H3|T3]):- H3 is F(H1,H2),mymap(F,T1,T2,T3).