5

リストなどの変数が無制限になるまで目標を凍結したいのですが、今は

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,[]).

しかし、いくつかの操作の後に停止し、永遠に待機します。誰かがこれを修正する方法を教えてもらえますか?

4

1 に答える 1