/* BAGOF : bagof evaluable predicate SYSTEM Lawrence Updated: 14 October 81 */ % Simple minded bagof bagof(X,P,_) :- recorda($bagof,$bagof,_), call(P), recorda($bagof,X,_), fail. bagof(_,_,List) :- $collect_bag([],List). $collect_bag(Sofar,Ans) :- $get_next(Next), !, $collect_bag([Next|Sofar],Ans). $collect_bag(Ans,Ans). $get_next(Next) :- recorded($bagof,Next,ID), erase(ID), !, Next \== $bagof.