prolog - 非确定性谓词的 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:
?
解决方案
你想要:
test(member, set(X == [a,b,c])) :-
member(X, [a,b,c,d]).
推荐阅读
- java - vertx.setPeriodic函数时间间隔减小的问题
- r - 在 32 位计算机上重新安装 data.table 时遇到问题
- sql - ToDate 参数未在 SSRS 报告中显示当前日期记录
- coq - 无法将变量绑定到包装的打开公式
- leaflet - 创建地图后更改 fadeAnimation 选项
- javascript - 我该如何解决这个“ajax 请求实体太大”
- node.js - 如何使用现有用户的 .id 和 mongoose 模型填充?
- php - Laravel 8:SQLSTATE [23000]:违反完整性约束:1048 列“标题”不能为空
- php - vscode自动完成无法正常工作和完成
- powershell - 尝试使用 Powershell 在 CSV 中获取所有团队及其所有者、成员和来宾