如何在SWI-Prolog中创建事实?

时间:2010-11-03 05:25:33

标签: prolog

我只想创建类似:like(x,y)的内容。 我已经尝试了很长时间而且非常沮丧,有人可以告诉我该怎么做??? !!!

2 个答案:

答案 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,以获取更多信息。

相关问题