如果列表中的数字exactly/2
恰好等于 1 ,我编写了以下谓词:N
L
:- pred exactly(int, list(int)).
:- mode exactly(in, in) is semidet.
:- mode exactly(out, in) is det.
exactly(N, L) :-
length(filter(pred(X::in) is semidet :- (X = 1), L), N).
例如,调用exactly(X, [1, 0, 0, 1, 0, 1])
将绑定X
到3
.
N
我想创建类似的东西,但对于谓词:如果列表中的目标完全成功,我想编写一个成功的谓词L
。
例如,调用exactly(X, [true, false, member(1, [1, 2, 3]), member(0, [1, 2, 3])])
应该绑定X
到2
.