Составители:
Рубрика:
20
Например: num([1,2,3]).
Пусть мы хотим описать с помощью списка породы собак.
Программа 13
DOMAINS
dog_list= symbol* /* здесь «*» указывает на список*/
PREDICATES
dogs(dog_list).
CLAUSES
dogs([“лайка”,”борзая”,”дог”,”болонка”]).
После запроса:
goal: dogs(Х)
будут напечатаны все породы собак, а после запроса:
goal: dogs(_,_,_,Х)
получим: Х = болонка.
Операция разделения списка на голову и хвост обозначается с помо-
щью вертикальной черты:
[Head|Tail]
С помощью этой операции можно реализовывать рекурсивную об-
работку списка. Например, если мы хотим напечатать все элементы спис-
ка из Программы 13 построчно, то это можно выполнить с помощью
рекурсивного определения предиката:
print_list([ ]).
print_list([X|Y]) :- write(X),nl, print_list([Y]).
Рис. 2
[1,2,3,4]
1 [2,3,4]
2
[3,4]
3 [4]
4[ ]
Страницы
- « первая
- ‹ предыдущая
- …
- 20
- 21
- 22
- 23
- 24
- …
- следующая ›
- последняя »