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

问号,加上,减去前面的Prolog变量名,prolog,Prolog,我已经找到了一个解释,但没有找到一个。在Prolog谓词的描述中,有时在变量名之前的问号、加号和减号是什么意思 例如: predicate(?Variable1,+Variable2,-Variable3) +意味着Variable2应该被绑定(绑定到一个术语,或者可能只是某个变量)——您可以将其视为谓词/3的输入,谓词在执行时不会尝试修改它 -意味着Variable3在它的执行中被谓词/3绑定——您可以将其视为谓词/3的输出。然而,这并不意味着它不能被绑定,特别是当您知道要期望什么并且正在检

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

例如:

predicate(?Variable1,+Variable2,-Variable3)

+
意味着
Variable2
应该被绑定(绑定到一个术语,或者可能只是某个变量)——您可以将其视为
谓词/3
的输入,谓词在执行时不会尝试修改它

-
意味着
Variable3
在它的执行中被
谓词/3
绑定——您可以将其视为
谓词/3
的输出。然而,这并不意味着它不能被绑定,特别是当您知道要期望什么并且正在检查是否成功时,但是
谓词/3
被描述为潜在地绑定(统一)
变量3

意味着
变量1
可以绑定(
+
,输入)也可以不绑定(
-
,输出)谓词/3应该处理这两种情况,如果它接受任何一种情况。

  • 表示:此变量可以实例化,也可以不实例化。这两种方法都是可能的
  • +
    表示:此变量是谓词的输入。因此,它必须被实例化
  • -
    表示:此变量是谓词的输出。它通常是非实例化的,但如果要检查特定的“返回值”,则可能是非实例化的
资料来源:SWI Prolog文档第4章