Ребят, привет! Мне нужно сделать на прологе поиск по факту по нескольким параметрам, которые меняются динамически. Я так понимаю, что нужно сделать список с id фактами и потом ненужные элементы удалять из этого списка или создавать новый список с нужными элементами. Факт у меня - сноуборд, ест id, Brand и много разных параметров. Я написал предикат, который по бренду создает новый LIST, но этот предикат не выходит из рекурсии. Помогите!!!
class predicates
member : (integer, integer*) nondeterm (i,i).
clauses
member(X,[Y|_]):-
X=Y,!.
member(X,[_|Y]):-
member(X,Y).
class predicates
createListId : (integer*, integer*) nondeterm (i,o).
clauses
createListId(List, Out) :-
snowboard(Id,_,_,_,_,_,_),
not(member(Id,List)),!,
createListId([Id|List],Out).
createListId(A,A).
class predicates
cutBrand : (string, integer*, integer*) nondeterm anyflow.
clauses
cutBrand(_,[], _).
cutBrand(Brand, [H|T], NewList):-
snowboard(H, B,_,_,_,_,_),
Brand=B,!,
cutBrand(Brand,T,[H|NewList]).
cutBrand(Brand, [H|T], NewList):-
cutBrand(Brand,T,NewList).
cutBrand(_,A,A).