用于声明一个对象大于另一个对象的Prolog谓词?

用于声明一个对象大于另一个对象的Prolog谓词?,prolog,logic,logic-programming,Prolog,Logic,Logic Programming,我正试图编写一些简单的Prolog代码来比较对象,让我们知道一个对象比另一个大。比如说, larger(star, gasgiant). larger(gasgiant, rockyplanet). larger(rockyplanet, moon). 列出的第一项大于列出的第二项。这就是我想用来定义的关系: 较大(X,Y):-X>Y. 这是定义这种关系的正确方法吗 这是定义这种关系的正确方法吗 可以这样定义: larger(X,Y):- compare(>, X, Y). 或者,简单

我正试图编写一些简单的Prolog代码来比较对象,让我们知道一个对象比另一个大。比如说,

larger(star, gasgiant).
larger(gasgiant, rockyplanet).
larger(rockyplanet, moon).
列出的第一项大于列出的第二项。这就是我想用来定义的关系:

较大(X,Y):-X>Y.

这是定义这种关系的正确方法吗

这是定义这种关系的正确方法吗

可以这样定义:

larger(X,Y):- compare(>, X, Y).
或者,简单地说

larger(X,Y):- X @> Y.

我不明白你的问题,既然你已经定义了上面更大的事实,为什么要定义
更大的(X,Y):-X>Y.
<代码>较大(X,Y):-X>Y.仅在您希望它处理数字时才有用。@coder我如何定义一个对象大于另一个对象?说
更大(星,煤气巨星)
就够了吗?是的,你正在定义一个关系,例如
煤气巨星
之间的关系,约定第一个更大,同样适用于数字,这意味着5>4,它可以写为>(5,4)作为前缀运算符,同样的褶皱适用于你的
大/2
定义。这就是为什么更大(恒星、气体巨星)。这就是事实。它已经在那里了,您不需要调用任何进一步的知识:“这是名为
star
的图形节点,这是名为
gasgantian
的图形节点,这是一个从
star
gasgantian
的链接,标记为
更大的
“完成了!”如果我正确理解了您的问题,您希望添加可传递闭包,具体操作如下:
:-table larger/2。较大(X,Y):-较大(X,Z),较大(Z,Y)。