【发布时间】:2016-05-03 19:22:15
【问题描述】:
我现在正在尝试学习 prolog,并开始了递归主题。遇到了这个继任者的例子。
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) ) ETC。 该问题要求使用 pterms 定义谓词 (P1, P2) 以使 P2 成为 P1 的后继。 有人可以为我更详细地解释这个问题吗? 我现在看到的方式是,我必须遍历 P1 直到结束,然后将其与 P2 进行比较,但我不太确定语法。 任何提示都会很有用
【问题讨论】:
-
succ/1只是一个任意函数符号。更常见的是s/1。
标签: prolog successor-arithmetics