在Prolog中谓词名后面斜杠的含义是什么?

时间:2012-10-17 13:34:50

标签: prolog predicate

我已经阅读了SO问题what does slash(/) do in prolog?What is the meaning of predicate “simple/1” in Prolog (SWI-Prolog),但这些链接似乎对我没有帮助。

我正在阅读一些关于Prolog的初学者教程。 像Solve/4Go/1这样的短语使我感到困惑。什么斜线和数字意味着什么?

3 个答案:

答案 0 :(得分:13)

该函数在其签名中期望的参数数量。注意中缀运算符,它可以接受多个参数,即使它们被调用的方式是将它们放在参数之间。也就是说,您可以将普通加法+等内容视为二元运算符。因此A+B+(A,B)实际上相同,这意味着您可以使用+定义+/2

答案 1 :(得分:2)

我引用了“Prolog:The Standard:Reference Manual”第8页(当我googled'prolog谓词指标'时的2 ^条目)。

  

谓词指标......这是名称/精神

形式的基础术语

ISO内置仿函数/ 3访问此类数据

?- functor(append(a,b,c),Name,Arity).
Name = append,
Arity = 3.

答案 2 :(得分:2)

正如EMS和Chac解释的那样,这个数字表示参数的数量。您在文档中找到此数字的原因是因为具有相同名称和不同arity(参数数量)的谓词是不同的谓词。

所以谓词:

my_predicate/3 

是不同的谓词:

my_predicate/4

并且包含数字以清楚地表明他们正在谈论哪一个。