Вторая часть небольшого экскурса в Пролог

Предыдущая статья о Прологе была явно поверхностной, попробую реабилитироваться. Ключевые элементы программы на прологе, это: факты и правила. В предыдущем примере фактами были:

мужик(фродо_беггинс).
родитель(банго_беггинс, бильбо_беггинс).

Пример правила, выглядел так:

папа(X, Y) :- мужик(X), родитель(X, Y).

Факты могут иметь и более сложный вид:

родитель(мужик (банго, беггинс), мужик (бильбо, беггинс)).

Структура зависит от представления данных и логики приложения.
Правила, они же, предикаты, они же — утверждения, представляют собой, своего рода формулы:

папа(X, Y) :- мужик(X), родитель(X, Y).

Здесь X, Y — переменные, а запятая между утверждениями, выполняет роль логического «И». Логическое «ИЛИ» записывается как знак точки с запятой «;». Символом точки «.», заканчиваются все предложения (строки) в прологе.
Универсальность использования утверждений, и главное отличие от функций в том как они могут быть использованы. Это проще всего пояснить на примере, опишем предикат, сравнивающий два значения:

compare(X,Y) :- X = Y.

А вот два примера его использования:

?- compare(2,2).
true. – сравниваем два числа, получаем результат ИСТИНА


?- compare(2,X).
X = 2. – задаем одно из чисел и система «догадывается», какое значение сделает условие истинным.

Несколько полезных ссылок:

  • SWI-prolog, — отличная кроссплатформенная реализация классического пролога, с интерфейсами для интеграции с C, C++, Java.
  • SWI-Prolog-Editor, — в комплекте со SWI-prolog идет emacs, но это IDE будет попроще, к томуже есть разные локализации, в том числе и русская.

Comments

comments


Bookmark and Share