gpt4 book ai didi

database - 动态数据库 - 包括和排除文件

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:53 25 4
gpt4 key购买 nike

prolog是否有内置谓词,可以在运行时导入和导出完整的文件?

我需要像“assert”和“retract”这样的谓词。问题是“assert”和“retract”只操作一个动态列表,而不是一个完整的文件。

我知道如何将一个文件包含到另一个文件中的两种方法:

:- include('file.pl').
:- consult('file.pl').

这主要发生在代码的开头。

我可以在我的代码中间使用这些谓词吗? (我认为 consult 谓词有效,但我对 include 谓词有问题...)
是否有机会再次排除/“删除”包含的文件? (更重要的问题)

我找到了内置谓词“delete_file/1”,它会从字面上删除文件(从你的内存中)——这不是我想要的。但是文件仍然没有从当前程序中删除,只是从内存中删除,这真是奇怪......

我希望有人能帮助我,因为除了上面解释的谓词,我找不到其他任何东西。谢谢!!

最佳答案

不是所有的序言都能识别consult(例如,GNU Prolog 就不能)。但是 include/1consult/1 似乎确实可以在 SWI Prolog 的中间文件中工作,而 include/1 在 GNU Prolog 中。

撤消文件咨询是另一个问题。 Prolog 查阅该文件,收集所有事实和谓词,并且在操作完成时忘记它全部来自特定文件的事实。就好像您将它们全部手动输入一样。它没有记录表明任何特定的谓词或事实集来自特定的查阅文件。要“撤消”任何此类事实或谓词,您必须对因 include 而断言的项目执行 retract/1retractall/1 咨询。如果您正在咨询的仿函数是唯一的,那可能很简单,因为这样您就可以使用 retractall(my_unique_functor(_,_)).retract(foo(_)).。但是,如果您混合使用它们(现有的和新声明的)并希望被选中,则必须将它们分类。

关于database - 动态数据库 - 包括和排除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com