我在商店里有一个产品信息数据库,如下所示:product(Barcode, ProductName, Category, Refrigerated, VendorName).
我正在尝试编写(非常)基本操作来检查两个产品是否具有相同的条形码.
我的代码:
sameCode(product(code1,_,_,_,_),product(code2,_,_,_,_)):- code1=code2.
Run Code Online (Sandbox Code Playgroud)
然而,在检查它时,我得到了:
52 ?- sameCode(product(972000456745, matches, 05, false, fire_ltd),product(972000456745, lighter, 05, false, fire_ltd)).
false.
Run Code Online (Sandbox Code Playgroud)
所以我试图告诉它true总是返回,通过使它成为一个没有要求的声明:
sameCode(product(code1,_,_,_,_),product(code2,_,_,_,_)).
Run Code Online (Sandbox Code Playgroud)
但我还是得到了false.任何想法为什么会发生?
这是因为code1&code2是原子,因为你没有传入原子code1&code2,它不匹配并返回false.您需要变量(以大写字母或下划线开头):
sameCode(product(Code1,_,_,_,_), product(Code2,_,_,_,_)) :- Code1 = Code2.
Run Code Online (Sandbox Code Playgroud)
这可以简化为:
sameCode(product(Code,_,_,_,_), product(Code,_,_,_,_)).
Run Code Online (Sandbox Code Playgroud)
因为Code,当然,统一与本身.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |