Программист может вводить свои собственные операторы. Каждый оператор определяется своим именем, приоритетом и типом.

Номер приоритета - это целое число из некоторого диапазона, скажем, между 1 и 1200. Оператор с самым больший номером приоритета соответствует главному функтору выражения, в котором этот оператор встретился. Операторы с меньшими номерами приоритетов связывают свои аргументы сильнее других операторов.

Тип оператора зависит от двух условий:     (1)    его расположения относительно своих аргументов,    (2)     приоритета его аргументов по сравнению с его собственным. В спецификаторах, таких, как xfyх   обозначает аргумент, чей номер приоритета строго меньше номера приоритета оператора;  у   - аргумент с номером приоритета, меньшим или равным номеру приоритета оператора.

Упражнения

3. 12.    Если принять такие определения

        :- ор( 300, xfy, играет_в).

        :- ор( 200, xfy, и).

то два следующих терма представляют собой синтаксически правильные объекты:

        Tepмl = джимми играет_в футбол и сквош

        Терм1 = сьюзан играет_в теннис и баскетбол и волейбол

Как эти термы интерпретируются пролог-системой? Каковы их главные функторы и какова их структура?

Посмотреть ответ

3. 13.    Предложите подходящее определение операторов ('работает', 'в', 'нашем'), чтобы можно было писать предложения типа:

        диана работает секретарем в нашем отделе.

а затем спрашивать:

        ?- Кто работает секретарем в нашем отделе.

        Кто = диана

        ?- диана работает Кем.

        Кем = секретарем в нашем отдела

Посмотреть ответ

3. 14.    Рассмотрим программу:

        t( 0+1, 1+0).

        t( X+0+1, X+1+0).

        t( X+1+1, Z) :-

            t( X+1, X1),

            t( X1+1, Z).

Как данная программа будет отвечать на ниже перечисленные вопросы, если '+' '- это (как обычно) инфиксный оператор типа yfx?

(a)    ?- t( 0+1, А).

(b)    ?- t( 0+1+1, В).

(с)    ?- t( 1+0+1+1+1, С).

(d)    ?- t( D, 1+1+1+0).

Посмотреть ответ

3. 15.    В предыдущем разделе отношения между списка ми мы записывали так:

        принадлежит( Элемент, Список),

        конк( Список1, Список2, Список3),

        удалить( Элемент, Список, НовыйСписок),   . . .

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату