7

我一直在尝试学习 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).
4

3 回答 3

16

s/1它本身不做任何事情,它也不是一个谓词。它们只是术语,代表它们的论点的继承者。所以,s(0)用来表示0(ie 1)的后继者,用来表示(ie )s(s(0))的后继者,以此类推。它们在 Prolog 中如此广泛,因为 Prolog 是一种执行符号计算的非常好的语言,而即使是简单的算术运算也感觉很笨拙,这意味着它们没有与编程范式无缝集成。s(0)2

于 2011-11-19T21:55:20.080 回答
1

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

于 2011-11-19T20:45:43.170 回答
0

它是特定于 Prolog 实现的。它指的是后继谓词,有关更多信息,请参见this

于 2011-11-19T21:12:08.653 回答