问号,加上,减去前面的Prolog变量名

时间:2010-11-18 23:17:03

标签: prolog

我已经搜索过这方面的解释,但还没找到。在Prolog谓词的描述中,有时在变量名前面的问号,加号和减号是什么意思?

示例:

predicate(?Variable1,+Variable2,-Variable3)

2 个答案:

答案 0 :(得分:29)

  • ?表示:此变量可以实例化,也可以不实例化。两种方式都是可能的。
  • +表示:此变量是谓词的输入。因此必须实例化。
  • -表示:此变量是谓词的输出。它通常是非实例化的,但可能是您要检查特定的“返回值”。

来源:SWI Prolog文档的第4章。

答案 1 :(得分:4)

+表示预期Variable2被绑定(对于一个术语,或者可能只是一些变量) - 您可以将其视为输入到{{ 1}},谓词在执行时不会尝试修改。

predicate/3表示-在执行时期望被Variable3绑定 - 您可以将其视为来自{{1}的输出 }。这并不意味着不能绑定,但是,特别是如果您知道期望什么并且正在检查成功,但predicate/3被描述为可能绑定(统一){{ 1}}到某事。

predicate/3表示predicate/3可以 绑定(Variable3,输入)或不绑定(?,输出) - {{ 1}}应该处理这两种情况,如果它接受的话。