我是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]则将两个列表一起附加到单个列表中。