Составители:
Рубрика:
Не все разделы обязательно должны присутствовать в Prolog-программе.
Возможности языка Prolog продемонстрируем на примерах Prolog-программ.
Пример 3.4. Для клаузальной формулировки задачи, рассмотренной в
примере 3.2, можно составить следующую Prolog-программу:
domains
being=symbol
what=symbol; err(being)
predicates
person(being)
makes(being,what)
error(what)
clauses
person("Иван").
person("Таня").
makes(X,err(X)):-person(X).
error(err(X)):-person(X).
Дадим пояснения к этой программе.
В разделе domains используется стандартный тип данных symbol –
строка символов, а также типы данных, определенные пользователем: being,
what – пользовательские варианты стандартного типа symbol; err(being) –
пользовательский структурированный тип (так называемый функтор,
базирующийся на уже определенном типе being), соответствующий функции
ош(x) из примера 3.2. Обратите внимание, что пользовательский тип what
может трактоваться либо как symbol, либо как err(being) – это одна из
особенностей языка Prolog.
В разделе predicates описаны предикаты, определяемые пользователем.
Соответствие обозначениям примера 3.2:
человек(x) person(being)
совершает(x,y) makes(being,what)
ошибка(y) error(what) .
Обратите внимание на синтаксис записи фактов и правил в разделе clauses.
Цель может быть задана в программе в разделе goal или введена
непосредственно с клавиатуры в режиме диалога. Введя цель makes(X,Y),
получим
X=Иван, Y=err("Иван")
X=Таня Y=err("Таня")
2 solutions .
131
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »