我只想创建类似:like(x,y)
的内容。
我已经尝试了很长时间而且非常沮丧,有人可以告诉我该怎么做??? !!!
答案 0 :(得分:43)
我假设您正在以交互方式使用swi并尝试输入该事实会给您一个错误:
1 ?- like(x, y).
ERROR: toplevel: Undefined procedure: like/2 (DWIM could not correct goal)
由于数据库中不存在这一事实。 如果是这种情况,请先尝试断言事实:
2 ?- assert(like(x,y)).
true.
然后你可以尝试:
3 ?- like(x, y).
true.
这次查询成功,因为事实存在于数据库中。
更好的方法可能是将您的子句写入文件&然后consult他们。 Swi prolog有类似emacs的编辑器,您可以通过键入
来调出emacs.
在提示符下。或者使用您自己的编辑器和然后查阅文件。 Swi prolog 附带了许多可能有帮助的图形工具;看一下手册 了解更多详情。
答案 1 :(得分:0)
您可以创建事实序言文件并使用咨询功能将其加载。
例如,
animals.pl
bigger(elephant, tiger).
bigger(tiger, rabbit).
bigger(rabbit, sparrow).
bigger(sparrow, ant).
您还可以使用assert函数在prolog终端中定义事实。
1 ?- assert(bigger(elephant, rabbit)).
true.
请参阅此link,以获取更多信息。