Я написал программу Prolog, чтобы проверить, является ли список палиндромом, и создать палиндром, если это не так.Эта программа переворачивает список и добавляет его к первоначальному палиндрому.
domains
list = char*
predicates
rev (list, list, list)
reverse (list, list)
palindrome (list, list)
append (list, list, list)
del (list, list)
clauses
rev ([H|T], A, R) :- rev (T, [H|A], R).
rev ([], A, A).
reverse (L, R) :- rev (L, [], R).
del ([_|L1], L1).
palindrome (L, L) :-
reverse (L, L).
palindrome (L, Res) :-
reverse (L, R),
del (R, R1),
append (L, R1, Res).
append ([], L, L).
append ([X|L1], L2, [X|L3]) :-
append(L1, L2, L3).
Но мне нужно заменить предикат palindrome
на предикат, который будет использовать рекурсию вместо обращения списка.