我想冻结我的目标,直到某个变量(例如列表)是无限的,现在我有
sieve(N,L) :-
freeze(Aux,sieve(N,L,[],Aux)),
numlist(2,N,Aux).
sieve(N,L,R,[H|T]) :-
freeze(X, X mod H =\= 0 ; X == H),
findall(X,select(X,T,_),P),
sieve(N,L,[H|R],P).
sieve(_,L,L,[]).
但它会在一些操作后停止并永远等待。有人可以告诉我如何纠正这个问题吗?