Prolog:谓词/变量中的前缀是什么



示例:

conditions([-on(a, b)]).

我不知疲倦地寻找这个词和+前缀的含义,但没有结果。你是我最后的希望。

没有提供上下文,所以我认为这可能来自文档中的某些内容。

如果您阅读Prolog手册中的介绍材料(SWI、Gnu或其他),它们描述了这些约定。+-?用作文档中的约定,用于指示变量是输入、输出还是变量(任意一个)。例如,来自Gnu Prolog手册:

+:必须实例化参数。

-:参数必须是一个变量(如果内置谓词成功,则会实例化)。

?:参数可以是实例化的,也可以是变量。

因此,例如,atom_length/2被描述为;

atom_length(+atom, ?integer)

这意味着您必须提供atom(它不能是变量),而integer既可以是变量(在这种情况下atom_length将提供值),也可以实例化(在这种情形下atom_length将指示您的查询是真是假)`。

从这个意义上讲,您通常不会在代码中使用-+,除非您真的打算将其作为术语的一部分。考虑到给定的例子,它看起来可能是这个术语的预期部分:

conditions([-on(a, b)]).

列表参数由一个术语组成,如果拼写完整,则为-(on(a,b))(参数为on/2-/1)。这里的-不提供任何功能,它只是添加了结构(该结构是一个名称为-、参数为on(a,b)的术语)。

最新更新