женщина( лиз).

женщина( энн).

женщина( пат).

мужчина( джим).

отпрыск( Y, X) :-                      % Y - отпрыск X, если

      родитель( X, Y).                  % X - родитель Y

    мать( X, Y) :-                         % X - мать Y, если

            родитель( X, Y),            % X - родитель Y и

            женщина( X).                % X - женщина

родительродителя( X, Z) :-

                                    % X - родитель родителя Z, если

            родитель( X, Y),            % X - родитель Y и

            родитель( Y, Z).            % Y - родитель Z

    сестра( X, Y) :-                       % X - сестра Y

            родитель( Z, X),

            родитель( Z, Y)

                            % X и Y имеют общего родителя

            женщина( X, Y),            % X - женщина и

            различны( X, Y).           % X отличается от Y

предок( X, Z) :-                          % Правило пр1:  X - предок Z

             родитель( X, Z).

предок( X, Z) :-                          % Правило пр2:  X - предок Z

        родитель( X, Y),

        предок( Y, Z).

Рис. 1. 8.   Программа о родственных отношениях.

предок. Иногда бывает удобно рассматривать в целом все множество предложений, входящих в состав одного отношения. Такое множество называется процедурой.

На рис. 1.8 два предложения, входящие в состав отношения предок, выделены именами 'пр1' и 'пр2', добавленными в программу в виде комментариев. Эти имена будут использоваться в дальнейшем для ссылок на соответствующие правила. Вообще говоря, комментарии пролог-системой игнорируются. Они нужны лишь человеку, который читает программу. В Прологе комментарии отделяются от остального текста программы специальными скобками '/*' и '*/'. Таким образом, прологовский комментарий выглядит так

/*    Это комментарий    */

Другой способ, более практичный для коротких комментариев, использует символ процента %. Все, что находится между % и концом строки, расценивается как комментарии:

%    Это тоже комментарий

Упражнение

1. 6.    Рассмотрим другой вариант отношения предок:

    предок( X, Z) :-

           родитель( X, Z).

    предок( X, Z) :-

           родитель( Y, Z).

           предок( X, Y).

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

0

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

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