Списки - голова и хвост...
Доброго времени суток:)
Подскажите пожалуйста литературу, где подробно рассказывается про эти самые голову и хвост! У меня написаны проги (не мной:)), а препод просит объяснить как работает прога ну например
/*Программа Нахождение элемента списка с номером N
внешняя цель: poisk([3,5,7,9],3,X)*/
domains
list=number*
number=integer
num=integer
predicates
poisk (list,num,number) до сих пор понятно все, а вот дальше...
goal
write(«Cписок [3,5,7,9,11]»),nl,
write(«Введите номер элемента “),readint(Y),
poisk([3,5,7,9,11],Y,X),
write(”Элемент под номером “,Y,” = »,X ).
clauses
poisk([H|_],1,H).
poisk([_|T],N,X):-
N1=N-1,
poisk(T,N1,X).
Что за механизм - не совсем понятно, то ли он перебором все-таки каждый элемент запихивает в голову, то ли он с хвостом мутит:)
Если есть инфа, где можно подробнее почитать о работе прог на прологе, поделитесь пожалуйста!:)