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

Question mark, plus, minus preceding Prolog variable names

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

示例:

1
predicate(?Variable1,+Variable2,-Variable3)

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

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


+ 意味着 Variable2 应该被绑定(到一个术语,或者可能只是一些变量)——你可以把它看作是 predicate/3 的输入,谓词不会尝试修改它正在执行中。

- 意味着 Variable3 在它的执行过程中应该被 predicate/3 绑定——你可以把它看作是 predicate/3 的输出。然而,这并不意味着它不能被绑定,特别是如果你知道会发生什么并且正在检查是否成功,但是 predicate/3 被描述为可能绑定(统一) Variable3 到某些东西。

? 意味着 Variable1 可以被绑定(+,输入)或不被绑定(-,输出) - predicate/3 应该处理这两种情况,如果它接受任何一个。