Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog 序言-需要关于事实的信息_Prolog_Fact - Fatal编程技术网

Prolog 序言-需要关于事实的信息

Prolog 序言-需要关于事实的信息,prolog,fact,Prolog,Fact,假设我有这样一个事实: bigger(cat,mouse). 如果我想向某人描述这一点,我会说“猫是这个事实中的第一个术语,鼠标是第二个术语”是正确的吗?或者我会把猫和鼠标称为原子,并说“猫是这个事实中的第一个原子,鼠标是第二个”。我认为,参数是一个完美的词。但通常要用以下形式来描述谓词: predicate/arity : predicate(arguments...) description of arguments 这里会有这样的情况: bigger/2 : bigger(Bigger

假设我有这样一个事实:

bigger(cat,mouse).

如果我想向某人描述这一点,我会说“猫是这个事实中的第一个术语,鼠标是第二个术语”是正确的吗?或者我会把猫和鼠标称为原子,并说“猫是这个事实中的第一个原子,鼠标是第二个”。我认为,参数是一个完美的词。但通常要用以下形式来描述谓词:

predicate/arity : predicate(arguments...)
description of arguments
这里会有这样的情况:

bigger/2 : bigger(Bigger, Lesser)
Holds if Bigger is bigger than Lesser.
此外,您还可以精确参数的模式:+对于输入,-对于输出?对于这两种模式(对于纯输入,请参阅@false的答案),以获取更多关于模式的信息(如果需要)

此处的完整版本可以是:

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

您的第一个描述是公平的,即“术语”是递归数据结构:即术语是原子、数字或结构,其中结构是“名称(arg1,arg2,…”,每个参数都是术语

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


正如其他答案所指出的,“参数”是用结构化术语对位置标识属性的通常命名。

要把事情搞混一点,我可能会说,
biger
是一种二进制关系,在
cat
mouse
之间