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



我是Prolog语言的初学者,目前使用的是dynamic/1。在我的代码中有一行,例如如下:

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

我想了解为什么actual_position有一个/1,而at有一个/2。

谢谢!

斜线(/(后面的数字是谓词的arity:它是它所使用的参数的数量。所以member/2意味着一个有两个参数的member谓词或函子。

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

最新更新