【问题标题】:Defining a series of facts in SWI-Prolog在 SWI-Prolog 中定义一系列事实
【发布时间】:2017-03-06 14:41:12
【问题描述】:

在这里介绍新手;

我试图一次定义多个事实,但我不断收到以下错误:

?- 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.

我不确定第一行的语法错误是什么,我已经尝试以多种方式进行更改。

谢谢!

【问题讨论】:

  • 好吧,你用两个参数定义一个谓词,然后用一个参数调用一个谓词。如果要获取dick。您应该使用robin(damian,X) 调用它。
  • @WillemVanOnsem 谢谢!你真的为我解决了这个问题!

标签: prolog


【解决方案1】:

您给出的第一行不是一次定义多个谓词,而是定义一个带有两个参数的谓词。然后,当您尝试调用它时,您使用的是单个参数,如错误消息中所述,该参数未定义。这也是为什么它建议robin/2。像robin(damian, X) 一样调用它可以通过将第二个参数与X 统一来消除语法错误,但根据您的问题,这听起来不是您想要的。如果您想像在第二个代码示例中显示的那样使用谓词,您可能应该一次只定义一个谓词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2011-11-11
    • 2017-02-14
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多