s()谓词在Prolog中做了什么?

时间:2011-11-19 20:33:58

标签: prolog successor-arithmetics

我一直在努力学习Prolog,并且完全被谓词s()所做的事情所困扰。 我看到它经常使用,互联网上关于Prolog的资源很少,我找不到答案。

实施例

    /* sum(Is,S) is true if S is the sum of the list of integers Is.           */
    sum([],0).
    sum([0|Is],S):-sum(Is,S).
    sum([s(I)|Is], s(Z) ):-sum([I|Is],Z).

3 个答案:

答案 0 :(得分:14)

s/1本身没有做任何事情,而且它本身并不是谓词。它们只是术语,是他们论证的继承者的代表。因此,s(0)用于表示0的后继者(即1),s(s(0))用于表示s(0)的后继者(即{{1} }}), 等等等等。它们在Prolog中如此广泛,因为Prolog是一种非常好的执行符号计算的语言,而即使是简单的算术运算也会感觉很笨,这意味着它们不能与编程范例无缝集成。

答案 1 :(得分:1)

s / 1代表继任者。它用于以逻辑上可访问的方式表示数字。

答案 2 :(得分:0)

具体是Prolog实施。它指的是后继谓词,有关更多信息,请参阅this

相关问题