我是 Prolog 的新手,我正试图在 SWI-Prolog shell上设置规则,例如
listensToMusic(X) :- happy(X).
但它提示 -
ERROR: Undefined procedure: (:-)/2
我使用SWI-Prolog版本6.2.6
答案 0 :(得分:2)
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
答案 1 :(得分:1)
我的Prolog技能充其量只是尘土飞扬,但据我记得你应该在文件中声明事物,然后查阅文件将其加载到工作区中,然后使用shell来询问有关工作区的问题。要在shell中声明某些内容需要断言。