if your Prolog has call/N, use it:
myMaplist(Goal, [Elem1|Tail1], [Elem2|Tail2]) :-
call(Goal, Elem1, Elem2),
myMaplist(Goal, Tail1, Tail2).
otherwise build the call with univ, and use call/1
myMaplist(Goal, [Elem1|Tail1], [Elem2|Tail2]) :-
Pred =.. [Goal, Elem1, Elem2],
call(Pred),
myMaplist(Goal, Tail1, Tail2).
edit thanks to @false for pointing out that I must correct. To be true I posted that code without test, nevertheless I surely overlooked the bug... Here a correction
myMapList(_, [], []).
myMapList(Goal, [Elem1|Tail1], [Elem2|Tail2]) :-
Goal =.. [P|A],
append(A, [Elem1, Elem2], Ac),
Pred =.. [P|Ac],
call(Pred),
myMapList(Goal, Tail1, Tail2).
test:
?- myMapList(myMapList(=),[[1,2,3],[a,b,c]],L).
L = [[1, 2, 3], [a, b, c]] .