Prolog动态谓词/ 1和/ 2之间的差异

问题描述

我是Prolog语言的初学者,并且处于使用dynamic / 1的情况。在我的代码中有一行,例如:

:- dynamic actual_position/1,at/2,holding/1,talked/1,examined/1.

我想了解为什么Actual_position与/ 2相比为/ 1。

谢谢!

解决方法

斜杠(/)之后的数字是谓词的 arity :这是它所使用的参数的数量。因此member/2表示具有两个参数的member谓词或函子。

关联性很重要,因为就像在Java中一样,一个可以重载谓词名称:一个人可以使用相同的 name 定义多个谓词,但不同的关联性。例如,append/2 [swi-doc]将列表的列表连接到单个列表,而append/3 [swi-doc]将两个列表附加到单个列表中。