Составители:
Рубрика:
21
Для описания этого предиката в разделе goal программы можно ис-
пользовать конструкцию:
show :- dogs(X), print_list(X).
Если необходимо установить наличие некоторого элемента в списке,
то применяется правило:
find_it( X,[X| _ ]).
find_it( X,[ _ |Y]):- find_it( X,[Y]).
В первом описании происходит сравнение объекта поиска и головы
текущего списка. Если это сравнение неуспешно, то происходит откат
и попытка повторения со вторым вариантом.
Программа 14
DOMAINS
dog_list=symbol*
PREDICATES
dogs(dog_list).
find_it(symbol,dog_list).
GOAL
find_it(«болонка»,[«лайка», «дог» ]),write(“да”).
CLAUSES
find_it(X,[X,_]).
find_it(X,[_,Y]):-find_it(X,[Y]).
Первое правило описывает ситуацию, когда искомый элемент Х со-
впадает с головой списка.
Второе правило используется при неуспехе первого правила и опи-
сывает новый вызов первого правила, но уже с усеченным списком, в
котором нет первого элемента и т.д. Если в списке нет элементов (пус-
той список), то второе правило оказывается неуспешным.
Программа не напечатает Yes, поскольку болонки нет в списке со-
бак.
Следующий пример производит подсчет суммы всех элементов списка
чисел.
Программа 15
DOMAINS
spisok=integer*
PREDICATES
summa_sp(spisok,integer)
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »