我正在开发.pl文件中的算法,并在命令窗口中通过查询检查它。 我使用动态变量和缩进/断言谓词。而且,当我修改pl文件并单击“重新加载修改后的文件”时,我有不需要的其他事实。

例如,一开始我有 计数器(0)。

然后我做某事,撤回并确认这个计数器,它变成counter(7)。然后,当我重新加载修改后的pl文件时, 计数器(0)。和 计数器(7)。

如何防止这种情况并且仅使用counter(0)。一开始是什么?

谢谢。

有帮助吗?

解决方案

插入 通用标签

在文件的开头。完成测试后,将其删除。

其他提示

如果仅使用这些动态事实来实现计数器,则应考虑这是否是最好的方法。使用assert/1retract/1会使代码变慢。

您可以使计数器变量成为您在代码中传递的另一个谓词参数(您可能需要区分输入和输出,因此需要两个额外的参数),或者使用全局变量(这是非逻辑功能,但是,有时候这是不可行的。

这取决于您使用的系统。在YAP,B,GNU,SICStus中, 指令:- dynamic(counter/1).具有此作用。也就是说,只有 重新加载后,文件中的事实就会出现。

在SWI中,动态谓词将按照您的描述保留。您需要使用retractall/1直接删除它们,该代码保留谓词是动态的信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top