У меня возникли проблемы с пониманием того, как пролог работает со списками. Я пытаюсь написать функцию, которая добавит хвост в данный список и вернет новый список. но моя реализация не работает, и я не могу понять, как ее исправить. Вот что у меня есть:Добавление хвоста в Prolog
% add_tail(L,M,E) :- L is M with [E] appended.
% I wanna do this without using the append predicate
add_tail([E],[],E).
add_tail(List, [H|T], E):-
add_tail(List1, T, E),
List is [H|List1].
уточнить, что я хочу, чтобы эта функция делать, вот пример вывода:
?- add_tail(L,[1,2,3],4).
L = [1,2,3,4].
проверить [этот ответ] (http://stackoverflow.com/questions/15733735/why-prolog-outputs-a-weird-tree-like-list/15743688#15743688). это связано. –