单例变量错误

时间:2018-05-09 22:48:01

标签: prolog

我正在阅读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,谢谢。

编辑:

我没有检查过,但程序按照应有的方式运行,但仍然会发出警告,但是有没有办法摆脱错误或理解错误的原因?

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但是我得到了解决方案,如果出现Singleton variables: [Y]错误消息,请检查您的code,然后将您的Queries与<是否为strong>大写,小写。因为 Prolog 区分大小写。