я пытаюсь написать двоичный предикат, чтобы взять один список, вычислить мод 5 для каждого элемента, а затем поместить его в другой список. до сих пор я сделал это,
mod5(X,L):- R = [], modhelper(R,L), write(R).
modhelper(X,L):- memb(E,L), mod2(E,Z), addtolist(Z,X,X), modhelper(X,L).
%Get an element from the list L.
memb(E,[E|_]).
memb(E,[_|V]):- memb(E,V).
%If element is integer, return that integer mod 5 else return as is.
mod2(N,Z):- isInt(N) -> Z is N mod 5 ; Z = N.
%add this modified element to the output list.
addtolist(Y,[],[Y]).
addtolist(Y,[H|T],[H|N]):- addtolist(Y,T,N).
memb, mod2, addtolist работают как положено, но я делаю что-то не так в modhelper, чего не могу понять. Любая помощь приветствуется.