我正在阅读Ivan Bratko撰写的“人工智能编程”一书,我遇到了一个基本问题并遇到了错误,之前的堆栈溢出答案似乎没有帮助。
我试图用以前的事实作为参数编写规则并获取错误
Single variables: [Y]
我正在尝试运行的代码就是这个
parent(myfather,me).
parent(mymother,me).
happy(X) :-
parent(X,Y).
我过去曾设法制定这样的规则,我想我只是错过了一些非常明显的原因,为什么这不起作用。我认为当这个编译并运行时
happy(myfather).
它将返回true,因为它将在与父亲的快乐规则中替换X,然后与父母(myfather,Y)检查父(X,Y)。然后试着看看是否有一个说父母的事实(myfather,somethingelse ....)。
如果相关,我也在macOS上使用swipl,谢谢。
编辑:
我没有检查过,但程序按照应有的方式运行,但仍然会发出警告,但是有没有办法摆脱错误或理解错误的原因?
答案 0 :(得分:0)
我知道这是一个老问题,但是我得到了解决方案,如果出现Singleton variables: [Y]
错误消息,请检查您的code
,然后将您的Queries
与<是否为strong>大写,小写。因为 Prolog 区分大小写。