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

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

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

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

папа(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 будет попроще, к томуже есть разные локализации, в том числе и русская.

Site Footer

Sliding Sidebar

About Me

About Me

For whom this blog for?

For those who are interested in modern Internet technologies, IT business, startups, management, quality control, personal effectiveness, motivation. Here I write about what is interesting, about problems I faced and solutions I found. I hope it will be interesting to you either.

What motivates me to write?

The desire to improve, to study deeper topics that interest me. Find people with similar problems and tasks, together look for ways out and solutions.

Feel free to contact if you have anything to say to me

Old Flash site with my artistic works and misuc.