首页 > 解决方案 > 非确定性谓词的 Prolog 单元测试

问题描述

我正在尝试使用来自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:

标签: prologplunit

解决方案


你想要:

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

推荐阅读