1

我在商店中有一个产品信息数据库,如下所示:product(Barcode, ProductName, Category, Refrigerated, VendorName).

我正在尝试编写一个(非常)基本操作来检查两种产品是否具有相同的条形码。

我的代码:

sameCode(product(code1,_,_,_,_),product(code2,_,_,_,_)):- code1=code2.

然而,在检查它时,我得到了:

52 ?- sameCode(product(972000456745, matches, 05, false, fire_ltd),product(972000456745, lighter,        05, false, fire_ltd)).
false.

所以我试图告诉它true总是返回,让它成为一个没有要求的声明:

sameCode(product(code1,_,_,_,_),product(code2,_,_,_,_)).

然而我还是得到了false。任何想法为什么会发生?

4

1 回答 1

6

这是因为code1&code2原子,并且由于您没有传入原子code1& code2,因此它不匹配并返回false。您需要变量(以大写字母或下划线开头):

sameCode(product(Code1,_,_,_,_), product(Code2,_,_,_,_)) :- Code1 = Code2.

这可以简化为:

sameCode(product(Code,_,_,_,_), product(Code,_,_,_,_)).

Code当然,与自身统一。

于 2013-06-30T15:22:51.837 回答