2012-01-18 58 views
0

说我有一个事实,比如极品信息:Prolog的 - 事实

bigger(cat,mouse). 

如果我想描述这个的人,我会纠正说:“猫是这一事实和鼠标中的第一项是第二个术语“还是我会将猫和老鼠称为原子,并且说”猫是事实中的第一个原子,而老鼠是第二个原子“。

回答

1

你的第一描述是公平的,被“术语”的递归数据结构:即,术语或者是一个原子,一个数字,或一个结构,其中一个struct是'name(arg1,arg2,...)',每个参数都是一个术语。

所以你的第二个描述更准确(限制)。

正如其他答案指出的那样,“论证”是结构化术语中位置识别属性的通常命名。

0

参数将是我认为的完美单词。但通常形容一个谓语,你会使用以下形式:

predicate/arity : predicate(arguments...) 
description of arguments 

这会去是这样的:

bigger/2 : bigger(Bigger, Lesser) 
Holds if Bigger is bigger than Lesser. 

此外你可以精确的参数的模式:+输入, - 输出,? (而@为纯输入),请参阅@ false在this question上的答案以获得更多关于模式的信息(如果需要的话)。

在这里,完整的版本可以是:

bigger/2 : bigger(?Bigger, ?Lesser) 
Holds if Bigger is bigger than Lesser. 
0

要混为一谈了一下,我可能会说biggercatmouse之间保持一个二进制的关系。