prolog - 术语末尾的连字符是什么意思

标签 prolog

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

exists(A,object(B,A,apple,countable,na,eq,1)-1/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

关于prolog - 术语末尾的连字符是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45090126/

相关文章:

arrays - 如何在prolog中访问二维数组以及如何循环其中的每个元素

序言将函数调用视为结构定义

recursion - Prolog递归乘法

prolog - 用于简单传递性检查的不必要的谓词定义?

prolog - 如何在序言中为 MT 进行树转移

prolog - 获取查询的进一步解决方案

prolog - 这将是 SWI-Prolog 中优化的尾调用吗

Prolog - 从列表列表中获取第一个列表

java - 如何在Linux上使用JPL(双向Java/Prolog接口(interface))?

prolog - clpfd 中具体化的剩余约束