logo search
TurboProlog / Документация / TOM_1

Объединение одного списка с другим: декларативное и процедурное программирование

В том виде, как он дан в программе 11, предикат member работает дву-

мя способами. Рассмотримм его предложения еще раз:

member(Name, [Name|_]).

member(Name, [_|Tail]) :- member(Name, Tail).

На эти предложения можно смотреть с двух различных точек зрения:

декларативной и процедурной.

'С декларативной точки зрения предложения говорят:

Есть список; Name принадлежит этому списку, если голова

совпадает с Name; если нет, то Name принадлежит списку,

если оно принадлежит его хвосту.

'С процедурной точки зрения два предложения можно перевести

так:

Чтобы найти член списка, найти его голову, иначе найти

член в хвосте.

Эти две точки зрения соотносятся с целевым утверждением:

member(2, [1, 2, 3, 4]).

и

member(X, [1, 2, 3, 4]).

В результате, первое целевое утверждение просит Турбо Пролог выяс-

нить - верно ли утверждение. Второе просит Турбо Пролог найти всех членов

списка [1, 2, 3, 4].