我现在正在尝试学习序言,并且开始了递归主题。遇到了这个例子作为继任者。
numeral(0).
numeral(succ(X)) :- numeral(X)
我确实理解它在理论上是如何工作的。它采用数字 X 并 succ 递增它。我的问题是, succ 是内置谓词吗?或者在这个例子中还有其他事情发生。示例取自 learnprolognow.org
然后我遇到了这个练习
pterm(null).
pterm(f0(X)) :- pterm(X).
pterm(f1(X)) :- pterm(X).
它是用来表示二进制的,即 0 是 f0(null),1 是 f1(null),2(10) 是 f0(f1(null)),3(11) 是 f1(f1(null)) 等。该问题要求使用 pterms 定义谓词 (P1, P2) 以使 P2 成为 P1 的后继。有人可以为我更详细地解释这个问题吗?我现在看到的方式是,我必须遍历 P1 直到结束,然后将其与 P2 进行比较,但我不太确定语法。任何提示都会很有用