2013-04-17 2 views
0

Я новичок в Prolog и хочу изучить его. Я пытаюсь создать список, повторяя факты, но список, который был создан на один шаг назад, освежает и потерял данные. Как сохранить данные и добавить элементы в список?Prolog - Создание списка по итерационным фактам

funct(a,b,1). 
funct(b,c,2). 
funct(b,d,3). 

creatingList(X,Y,R):- funct(X,Y,A), funct(Y,Z,B), \+member(B,R) , append(R,B,R). 

Я пробовал это, но когда я отслеживаю, он продолжает терять данные, которые я ожидаю, это R = [1,2,3].

+0

apropos (findall). – User

ответ

3

@user правильно:

?- findall(funct(X,Y,Z), funct(X,Y,Z), Functs). 
Functs = [funct(a, b, 1), funct(b, c, 2), funct(b, d, 3)]. 

setof/3 и bagof/3 также может применяться, но их семантика немного сложнее.

+0

Спасибо, это сработало :) – tlbakh

Смежные вопросы