0

我正在尝试使用来自http://www.swi-prolog.org/pldoc/doc_for?object=section%28%27packages/plunit.html%27%29的 Prolog 单元测试 它给出了一个非确定性谓词的例子作为

test(member, all(X == [a,b,c])) :-
    member(X, [a,b,c]).

我认为它只是测试列表 X == [a,b,c] 中的所有元素,测试它是否在列表 [a,b,c] 中。但是为什么会

test(member, all(X == [a,b,c])) :-
    member(X, [a,b,c,d]).

报告wrong "all" answer:

4

1 回答 1

2

你想要:

test(member, set(X == [a,b,c])) :-
    member(X, [a,b,c,d]).
于 2018-10-01T17:56:56.360 回答