» » »

Язык Prolog. Операторы. Синтаксис операторов.

Напомним, что функциональный терм – это имя функции с аргументами в скобках. Само имя функции представляет собой нечисловой атом. Вообще же нечисловой атом – это функциональный терм без аргументов. Любой терм можно представить в виде дерева, корню которого приписано имя внешней функции, а ветвям соответствующие наборы аргументов. Например, терм f(x, g(y,z)) задаётся следующим деревом:

 src=img/15-1-2.jpg

 

Такое представление является канонической формой: она не зависит от способа записи термов. Каноническую форму полезно бывает использовать в тех случаях, когда требуется уточнить представление термов (некоторые термы могут быть записаны многими способами). В частности, для термов с одним или двумя аргументами функциональное обозначение можно заменить именем операции, причём имя функции-операции записывается как унарный префиксный (или постфикный) оператор, либо как бинарный инфиксный оператор: ор1 с а ор2 b вместо ор1(с) ор2(а,b). При этом именам функций-операций (ор1 и ор2) надо придать статус операторов с приоритетом. Очевидно, что выражения а ор2 b и ор2(а,b) задают один и тот же объект:

 src=img/15-2-2.jpg

Новые имена функций и предикатов можно записывать в виде операторов. Например, a+b*c и +(a*(b,c)) один и тот же терм; его дерево выглядит так:

src=img/15-2-3.jpg

Приоритет «+» ниже, чем у «*» (как обычно). Подчеркнём, что a + b * c - терм Пролога, а не числовой оператор, описывающий процедуру вычисления.

 src=img/15-2-4.jpg


Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.