3

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

listensToMusic(X) :- happy(X).

但它提示——

ERROR: Undefined procedure: (:-)/2

我使用 SWI-Prolog 版本 6.2.6

4

2 回答 2

3

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

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

?- [rules].

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

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

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

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

关于这个主题有一个详细的常见问题解答:错误:未定义的过程:(:-)/1 | (:-)/2 | (?-)/1

于 2013-01-16T11:46:10.720 回答
1

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

于 2013-01-16T11:47:40.743 回答