在prolog中大于运营商

时间:2016-04-30 06:39:12

标签: prolog operators

我正在研究SWI Prolog。我的数据库中有一些事实。在构建新规则时,我无法弄清楚如何使用“大于”运算符(>)。

我有一些形式的事实

student(john,3.2,cs).
student(mike,3.9,cs).

显示约翰是一名学生,拥有3.2 cgpa,属于CS部门,同样适用于迈克。

现在我想在我的数据库中添加规则

deanlist(X),如果X的cgpa大于3.8,则返回true

根据我的知识,我可以添加以下规则

deanlist(X):-
   X's cgpa is greater than 3.8

如果我采用蛮力方法,我可以使用OR运算符来获得cgpa大于3.8的所有可能性。就像我可以添加像

这样的规则
deanlist(X):-
   student(X,3.81,cs)
 ; student(X,3.82,cs)
 ; student(X,3.82,cs)
 .......so on to
   student(X,4.0,cs).

但我不想这样做,因为它变得硬编码,应该避免。

我已探索以下链接

http://boklm.eu/prolog/page_10.html#101

http://www.swi-prolog.org/pldoc/man?section=operators

但我无法弄清楚如何在我的情况下使用大于运算符。

请告诉我在这种情况下如何使用大于运算符。 感谢

1 个答案:

答案 0 :(得分:2)

在将GPA比较与新变量匹配后,您需要使用另一个语句进行GPA比较:

deanlist(X) :- student(X, Y, cs), Y > 3.8.

然后,deanlist(X).将返回:

X = mike