我有一个生成列表的程序,并在不同阶段从中删除某些元素。有 4 个删除阶段,调用第 4 个将首先调用 1,2,3 然后 4。谓词称为 s4(Q,100),还有 s1,s2,s3 具有相同的谓词样式,(Q,100 )。
在阶段 s1,我根据元素的数量来删除元素,因此我通过调用将 Q 传递给另一个谓词
removePrimes(Q,L).
现在,列表 Q 减去了不需要的元素。但是,Q 没有改变,仍然具有所有原始元素。
我的问题是,有没有办法给 Q 的结果 L 所以它的值可以传递给 s2 再次被改变?
这是我的其余代码,因此您可以更好地了解我的意思
s4(Q,X):-
s3(Q,X).
s3(Q,X):-
s2(Q,X).
s2(Q,X):-
s1(Q,X).
%Further alter the list here
%Q is not passed back, since it is unchanged in s1
s1(Q,X):-
s0(Q,X),
%remove the undesired elements
removePrimes(Q,L).
%L now contains the list we need, but Q is unchanged!!!
s0(Q, N) :-
%generate the list
validPair(Q).