X = (abc, def, ghi, jkl).
Это набор символов; пролог не распознает не-типы (int, long, double,...).
Список представлен головой (первый элемент) и хвостом (остальные элементы). Попробуйте запустить следующие примеры:
?- [1,2,3,4,5,6]=[Head|Tail].
?- [1,2,3,4,5,6]=[First,Second|Tail].
Теперь вам нужно ознакомиться с рекурсией (это сердце пролога). Процедура вставки может выглядеть так:
insert(X, List, [X|List]).
Но что, если список пуст; наша процедура считает, что список не является, поэтому нам нужна другая процедура, чтобы было достаточно предыдущей:
insert(X, [], [X|]).
Мы можем сделать больше: например, проверить, присутствует ли элемент в списке:
present(Item,[Item|_]).
present(Item,[_|Tail]) :-
present(Item,Tail).
Обратите внимание на рекурсию в нашей последней процедуре: present(Item, Tail) — она рекурсивно проверяет начало списка с помощью переменной Item, которую можно прочитать с клавиатуры:
check_if_present :- read(X), present(X, List).
где List был создан ранее.
Мы также можем очень легко объединять списки:
concatenating([],List,List).
concatenating([Head|Tail],List,[Head|ResultedTail]) :-
concatenating(Tail,List,ResultedTail).
person
Sebi
schedule
12.08.2012