我正在研究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
但我无法弄清楚如何在我的情况下使用大于运算符。
请告诉我在这种情况下如何使用大于运算符。 感谢
答案 0 :(得分:2)
在将GPA比较与新变量匹配后,您需要使用另一个语句进行GPA比较:
deanlist(X) :- student(X, Y, cs), Y > 3.8.
然后,deanlist(X).
将返回:
X = mike