我正在使用swi-prolog。我只是想按照“prolog的艺术”一书中的例子,但我没有得到正确的结果。我担心这可能是由于s / 1谓词造成的。我甚至无法在swipl的文档中找到s / 1,唯一类似的谓词是succ / 2:http://www.swi-prolog.org/pldoc/man?predicate=succ/2这不能像s / 1一样使用。我更喜欢使用s谓词。
这是用于确定数字是否是自然数的程序:
natural_number(0).
natural_number(s(X)) :- natural_number(X).
但是,natural_number(1)例如产生错误。这有什么问题?