Prolog新手在这里;
我试图一次定义多个事实,但我不断收到以下错误:
?- assert(robin(damian, dick)).
true.
?- robin(damian).
ERROR: Undefined procedure: robin/1
ERROR: However, there are definitions for:
ERROR: robin/2
false.
单独的陈述似乎工作正常:
?- assert(robin(damian)).
true.
?- assert(robin(dick)).
true.
?- robin(damian).
true.
我不确定第一行的语法错误是什么,我尝试过多次改变它。
谢谢!
答案 0 :(得分:1)
您提供的第一行不是一次定义多个谓词,而是定义具有两个参数的单个谓词。然后,当您尝试调用它时,您正在使用单个参数,该参数未定义,如错误消息中所述。这也是它建议robin/2
的原因。像robin(damian, X)
一样调用它将通过将第二个参数与X
统一来消除语法错误,但根据您的问题,听起来这不是您想要的。如果您希望像在第二个代码示例中显示的那样使用谓词,那么您可能应该一次定义一个谓词。