domains
list=symbol*
predicates
palin(list)
findrev(list,list,list)
compare(list,list)
clauses
palin(List1):-
findrev(List1,[],List2),
compare(List1,List2).
findrev([],List1,List1).
findrev([X|Tail],List1,List2):-
findrev(Tail,[X|List1],List2).
compare([],[]):-
write("\nList is Palindrome").
compare([X|List1],[X|List2]):-
compare(List1,List2).
compare([X|List1],[Y|List2]):-
write("\nList is not Palindrome").
OUT PUT
=======
Goal: palin([y,o,g,e,s,h])
List is not Palindrome
Yes
--------------------------
Goal: palin([n,a,y,a,n])
List is Palindrome
Yes