|
НАЗАД
Встроенные предикаты определения типов термов
integer(X) истинно, если X—целое число;
float(X) истинно, если X—вещественное число;
number(X) истинно, если X— целое или вещественное число;
atom(X) истинно, если X—атом;
atomic(X) истинно, если X—атом или число;
compound(X) истинно, если X—составной атом (структура);
novar(X) истинно, если X—константа;
var(X) истинно, если X—переменная.
string(X) истинно, если X—строка.
Предикат Number_list
Предикат number_list(L) определяет, является ли список X списком числовых термов. Схема отношения этого предиката имеет вид:
number_list(<список>).
Декларативное описание предиката number_list(L)формулируется следующим образом:
Список L включает один элемент Х. Тогда предикат number_list([X]) истинен, если X числовой терм.
Список L можно разделить на голову Н и хвост Xs. Тогда L есть список числовых термов, если H ¾числовой терм и хвост списка есть список числовых термов.
Процедура number_list(X,Y) состоит из двух правил:
number_list([]):¾ number(X). % Пр1
number_list(X,[_|T]): ¾ number(X),number_list(X,T). % Пр2
Предикат number(X) ¾стандартный предикат системы Arity Prolog, этот предикат истинен, если Х ¾ числовой терм.
Рассмотрим пример запроса к процедуре number_list(Х).
? ¾ number_list([1,2,3,4]).
ТР: number_list([1,2,3,4]).
Шаг 1: ТЦ: number_list([1,2,3,4]).
Пр1: [X]=[1,2,3,4] Þнеуспех (списки разной длины)
Пр2: number_list([1|[2,3,4]]):¾ number(1),number_list([2,3,4]).
ТР: number(1),number_list([2,3,4]).
Шаг 2: ТЦ: number(1) Þуспех
ТР: number_list([2,3,4]).
Шаг 3: ТЦ: number_list([2,3,4]).
Пр1: [X]=[2,3,4] Þнеуспех (списки разной длины)
Пр2: number_list([2|[3,4]]):¾ number(2),number_list([3,4]).
ТР: number(2),number_list([2,3,4]).
Шаг 4: ТЦ: number(2) Þуспех
ТР: number_list([3,4]).
Шаг 5: ТЦ: number_list([3,4]).
Пр1: [X]=[3,4] Þнеуспех (списки разной длины)
Пр2: number_list([3|[4]]):¾ number(3),number_list([4]).
ТР: number(3),number_list([4]).
Шаг 6: ТЦ: number(3) Þуспех
ТР: number_list([4]).
Шаг 7: ТЦ: number_list([4]).
Пр1: [X]=[4] Þуспех (списки одинаковой длины) при подстановке {X=4}
ТР: number(4).
Шаг 8: ТЦ: number(4) Þуспех
ТР: ÿ ¾успех.
Результат вычисления запроса number_list(3,[1,2,3,4]). Þ успех.
НАЗАД ЧИТАТЬ ДАЛЕЕ
|