Помещение всех результатов запроса в список в Prolog

Я хотел бы узнать, как сделать предикат, который помещает все результаты, полученные от некоторого запроса (так что я получаю результат и нажимаю точку с запятой, пока не получу False) в список.

Например, если я напишу foo(X,[1,2,3]) в каком-нибудь слушателе Prolog, допустим, результат будет

X=[11];
X=[22];
False.

Я бы хотел получить все эти результаты в виде списка, поэтому произошло бы что-то вроде следующего.

?-another_foo(X,[1,2,3]).
X=[[11],[22]].

another_foo будет каким-то образом использовать foo для создания списка со всеми результатами из foo. Я просто не знаю как.

14
задан vuzun 2 December 2010 в 21:18
поделиться