|
|
findall(X, T, L). - Собирает значения, возникающие в процессе бектрекинга, в список.
X |
Терм |
T |
Выражение |
L |
Список результата |
|
|
Определение предиката:
findall(E,R,_) if R, take_temp_list(List), connect(List,[E],Nl), assert(temp_list(Nl)), fail.
findall(_,_,List) if retract(temp_list(List)),!.
take_temp_list([ ]) if not(temp_list(_)), !.
take_temp_list(List) if retract(temp_list(List)), !. |
|
Примеры
Цель |
Результат |
Комментарий |
program:
a(1).
a(2).
a(t).
a(1).
goal: findall(X, a(X), L). |
L=[1, 2, t, 1] |
Сформирован список L, в который включены все предикаты программы, унифицирующиеся с a(X) |
|
|