Рекурсивная процедура должна состоять из фразы, определяющей условие окончания рекурсии, а затем следует фраза, выполняющая действия с заголовком списка, которая далее вызывает рекурсию сама себя с аргументом, которым служит остаток списка.
Пример 8. Вывод элементов списка.
% фраза, определяющая условие окончания рекурсии
печатать_элементы([ ]).
% рекурсивное правило
печатать_элементы(Первый|Остаток]):-
write(Первый), nl, % вывод первого элемента
печатать_элементы(Остаток). % рекурсивный вызов
Пример 9. Поиск слова в списке.
найти_слово(Slovo,[]):-fail. % Поиск заканчивается если список пуст
% или
найти_слово(Slovo,[Slovo|Y]). % слово совпадает с первым элементом
% списка
найти_слово(Slovo,[X|Y]):-найти_слово(Slovo,Y).
?− найти_слово(стул,[в, доме, есть, стул]).
yes.
? − найти_слово(забор,[в, доме, есть, стул]).
no.
Пример 10. Подсчет суммы элементов списка.
% фраза, определяющая условие окончания рекурсии
сумма([],0):-!.
% рекурсивное правило
сумма([A|B],S):-сумма(B,S1),S is S1+A.
?- сумма([1,2,3],X).
X = 6
Пример 11. Объединение двух списков в третий.
присоединить([],S,S).
присоединить([X|S1], S2, [X|S3]):- присоединить (S1, S2,S3).