【问题标题】:ERROR: Undefined procedure: (:-)/2错误:未定义的过程:(:-)/2
【发布时间】:2013-01-16 11:38:28
【问题描述】:

我是 Prolog 的新手,我正在尝试在 SWI-Prolog shell 上设置规则,例如 -

listensToMusic(X) :- happy(X).

但它提示-

ERROR: Undefined procedure: (:-)/2

我使用的是 SWI-Prolog 6.2.6 版

【问题讨论】:

    标签: prolog prolog-toplevel


    【解决方案1】:

    SWI-Prolog 不接受顶层的新规则和事实,它只接受查询。

    通常通过将规则写入文本文件(例如rules.pl)来添加规则,然后使用以下命令将其加载到 SWI-Prolog 中:

    ?- [rules].
    

    文件的绝对路径可以这样使用:

    ?- ['C:/Program Files/pl/demo/likes'].
    

    您可以通过发出[user]. 来输入规则,输入您的规则并以EOF 结尾(通常是Ctrl-D):

    ?- [user].
    |: listensToMusic(X) :- happy(X).
    |: <EOF> 
    true.
    

    关于这个主题有一个详细的常见问题解答:ERROR: Undefined procedure: (:-)/1 | (:-)/2 | (?-)/1

    【讨论】:

    • 谢谢,如果 rules.pl 位于与 SWI-Prolog 不同的目录中,我如何编写 [rules].
    • 将绝对路径放在引号中:['C:/Program Files/pl/demo/likes'].
    【解决方案2】:

    我的 Prolog 技能充其量是尘土飞扬,但据我所知,您应该在文件中声明内容,然后查阅文件以将其加载到工作区中,然后使用 shell 询问有关工作区的问题。在 shell 中声明一些东西需要一个断言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2014-08-30
      • 2017-09-09
      • 2020-05-28
      • 2017-11-01
      • 2023-03-25
      相关资源
      最近更新 更多