Программирование на языке Пролог для искусственного интеллекта



         

Создание и декомпозиция термов: =, functor, arg, name - часть 4


При определении отношения подставить

нам нужно рассмотреть несколько случаев и для каждого принять свое решение:

        если Подтерм = Терм, то Терм1 = Подтерм1;

        иначе если Терм - "атомарный" (не структура),

                    то Терм1 = Терм (подставлять нечего),

                    иначе подстановку нужно выполнить над

                                аргументами Tерм'a.

Эти правила можно превратить в программу, показанную на рис. 7.3.

Термы, полученные при помощи предиката '=..', разумеется, можно использовать и в качестве целей. Это дает возможность программе в процессе вычислений самой порождать и вычислять цели, структура которых не обязательно была известна заранее в момент написания программы. Последовательность целей, иллюстрирующая этот прием, могла бы выглядеть примерно так:

        получить( Функтор),

        вычислить( Списарг),

        Цель =.. [Функтор | Списарг],

        Цель

Здесь получить и вычислить - некоторые определенные пользователем процедуры, предназначенные для вычисления компонент цели. После этого цель порождается предикатом '=..', а затем активизируется при помощи простого указания ее имени Цель.

Некоторые реализации Пролога могут содержать требование, чтобы все цели, появляющиеся в программе, по своей синтаксической форме были либо атомами, либо структурами с атомом в качестве главного функтора. Поэтому переменная, вне

line();

%    Отношение



Содержание  Назад  Вперед