Вам не нужно использовать if и else.
Если исполнение достигнет указанной вами точки, у вас определенно будет палиндром.
rev(L1,L):-
revl(L1,[],L), % it's a palindrome if revl(L1,[],L) succeeds
write("It's a palindrome!").
% Recursively reverse A to B in revl(A,B,X)
revl([],L,L). % succeed if at the end B=X
revl([H|L1],L2,L3):- revl(L1,[H|L2],L3). % reverse 1 step
Что вы хотите:
rev(L1,L):-
revl(L1,[],L),! % it's a palindrome if revl(L1,[],L) succeeds
write("It's a palindrome!").
rev(_,_):- % alternative solution in case it's not a palindrome
write("It's not a palindrome!").
% Recursively reverse A to B in revl(A,B,X)
revl([],L,L). % succeed if at the end B=X
revl([H|L1],L2,L3):- revl(L1,[H|L2],L3). % reverse 1 step
Использование if-then-else
rev(L1,L):-
revl(L1,[],L)
-> write("It's a palindrome!")
; write("It's not a palindrome!").
revl([],L,L).
revl([H|L1],L2,L3):- revl(L1,[H|L2],L3).