Prolog - 需要有关事实的信息

时间:2012-01-18 00:05:30

标签: prolog fact

说我有一个事实如:

bigger(cat,mouse).

如果我想向某人描述这一点,我是否正确地说“猫是这个事实中的第一个术语而鼠标是第二个术语”或者我会将猫和老鼠称为原子并说“猫”是事实中的第一个原子,鼠标是第二个“。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

论证是我认为的完美词汇。但通常要描述一个谓词,你会使用以下形式:

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

这里有类似的东西:

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

此外,您可以精确设置参数的模式:+表示输入, - 表示输出,?对于两者(和@为纯输入),请参考this question上的@ false答案,以便在需要时获得更多关于模式的信息。

完整版可以是:

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

答案 2 :(得分:0)

要稍微混淆一点,我可能会说bigger是一个二元关系,它在catmouse之间保持不变。