一个术语末尾的连字符是什么意思

时间:2017-07-13 20:12:53

标签: prolog

我正在尝试理解该语句,但在对象术语的末尾我找不到关于-1/4的任何内容。我试过搜索,但我甚至不确定要搜索什么。

exists(A,object(B,A,apple,countable,na,eq,1)-1/4).

1 个答案:

答案 0 :(得分:4)

exists / 2的第二个参数是对符号中的两个术语。一个词是object(_A,A,apple,countable,na,eq,1),另一个词是1/4。如果您尝试以下查询,则可以看到此内容:

   ?- exists(A,X-Y).
X = object(_A,A,apple,countable,na,eq,1),
Y = 1/4

由于第二项是算术表达式,您可以使用is / 2评估它:

   ?- exists(A,X-Y), Z is Y.
X = object(_A,A,apple,countable,na,eq,1),
Y = 1/4,
Z = 0.25

仿函数( - )/ 2通常用于表示对。正如@lurker在评论中指出的那样,规范形式是-(X,Y),但由于( - )/ 2被定义为Prolog中的中缀运算符,因此两种符号都是等价的。要看到这一点,请考虑以下查询:

   ?- X-Y = -(X,Y).

true