Программа управляемая
Рисунок 16. 4. Программа, управляемая образцами, для получения
наибольшего общего делителя множества чисел.
Самый простой способ реализации этого языка - использовать механизмы управления базой данных, встроенные в Пролог. Добавить объект в базу данных или удалить объект из базы данных можно, применяя встроенные процедуры
assert ( Объект) retract( Объект)
Заменить один объект на другой также просто:
заменить( Объект1, Объект2) :-
retract( Объект1), !,
assert( Объект2).
Здесь задача оператора отсечения - не допустить, чтобы оператор retract удалил из базы данных более чем один объект (при возвратах).
line();% Простой интерпретатор для программ, управляемых образцами
% Работа с базой данных производится при помощи процедур
% assert и retract
:- ор( 800, xfx, --->).
пуск :-
Условие ---> Действие,
% правило
проверить( Условие),
% Условие выполнено?
выполнить( Действие).
проверить( [ ]). % Пустое условие
проверить( [Усл | Остальные]) :-
% проверить конъюнкцию
call( Усл),
% условий
проверить( Остальные).
выполнить( [ стоп] ) :- !. % Прекратить выполнение
выполнить( [ ]) :-
% Пустое действие (цикл завершен)
пуск.
% Перейти к следующему циклу
выполнить [Д | Остальные] ) :-
саll( Д),
выполнить( Остальные).
заменить( А, В) :-
% Заменить в базе данных А на В
retract( A), !,
assert( В).