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

sen*_*nel 22 prolog

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

例:

predicate(?Variable1,+Variable2,-Variable3)
Run Code Online (Sandbox Code Playgroud)

Rol*_*lig 29

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

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