У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


> V, singlepeak([V|W],Down).

Правило 4. Механізм уніфікації повинен виконувати як можна більше роботи.

Наприклад, для перевірки на рівність двох списків можна використати наступний фрагмент програми:

equal([],[]).

equal([U|X],[U|Y]):-equal(X,Y).

aле в цьому немає потреби, тому що предикат

equal(Х,Х)

за рахунок механізму уніфікації виконає всю потрібну роботу.

Правило 5. Для повтору краще використовуйте бектрекінг ніж рекурсію.

Бектрекінг зменшує стекові вимоги. Ідея заключається у тому, щоб використовувати конструкцію типу repeat...fail замість рекурсії. Наприклад, для повторного обчислення деякого предикату process(X,Y) можна використати наступну послідовність предикатів:

run:-readln(X),

process(X,Y),

write(Y),

run.

Але комбінація repeat...fail зменшує необхідність кінечного рекурсивного виклику. Визначивши

repeat.

repeat:-repeat.

ми можемо перевизначити run без рекурсії:

run:-repeat,

readln(X),

process(X,Y),

write(Y),

fail.

Тут, fail примушує Пролог виконувати бектрекінг в repeat, який завжди виконується успішно.

Література.

1. И. Братко. Программирование на языке Пролог для искусственного интеллекта. Москва, Мир, 1990.

2. Дж. Малпас. Реляционный язык Пролог и его применение. Москва, Мир, 1990.


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22