我无法理解此示例中发生的情况
立即学习 Prolog -第 3 章- 示例 3:继任者
numeral(0).
numeral(succ(X)) :- numeral(X).
当询问 numeric(X) 时,它会首先为 X 给出 0,然后继续 succ(0),以这种方式将 succ(0) 部分递增 1,直到它用完空间:
X = 0 ?
X = succ(0) ? ;
X = succ(succ(0)) ? ;
X = succ(succ(succ(0))) ? ;
X = succ(succ(succ(succ(0)))) ?
我很难理解为什么它会增加 succ(0)?
我知道序言会首先找到一个事实并匹配它,因此是第一个 0。然后它会回溯以查看是否有任何其他解决方案,它会“看到”规则。在规则中,它将使用实例化的 X 为 0。我失败的地方是看看为什么它会不断增加 succ(0)。X 是否变为 succ(0),而不仅仅是 0?
我为愚蠢的大脑道歉。