我已经搜索过这方面的解释,但还没找到。在Prolog谓词的描述中,有时在变量名前面的问号,加号和减号是什么意思?
示例:
predicate(?Variable1,+Variable2,-Variable3)
答案 0 :(得分:29)
?
表示:此变量可以实例化,也可以不实例化。两种方式都是可能的。+
表示:此变量是谓词的输入。因此必须实例化。-
表示:此变量是谓词的输出。它通常是非实例化的,但可能是您要检查特定的“返回值”。来源:SWI Prolog文档的第4章。
答案 1 :(得分:4)
+
表示预期Variable2
被绑定(对于一个术语,或者可能只是一些变量) - 您可以将其视为输入到{{ 1}},谓词在执行时不会尝试修改。
predicate/3
表示-
在执行时期望被Variable3
绑定 - 您可以将其视为来自{{1}的输出 }。这并不意味着不能绑定,但是,特别是如果您知道期望什么并且正在检查成功,但predicate/3
被描述为可能绑定(统一){{ 1}}到某事。
predicate/3
表示predicate/3
可以 绑定(Variable3
,输入)或不绑定(?
,输出) - {{ 1}}应该处理这两种情况,如果它接受的话。