Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog C#接口从文件中收回_C#_Prolog - Fatal编程技术网

Prolog C#接口从文件中收回

Prolog C#接口从文件中收回,c#,prolog,C#,Prolog,我刚刚建立了一个与SWI Prolog的连接,想要操纵事实。e、 收回并维护它们 我有一些类似这样的功能: String[] param = { "-q" }; PlEngine.Initialize(param); PlQuery.PlCall("consult('tablets.pl')."); PlQuery.PlCall("assert(tablet(4,newatomic)).");

我刚刚建立了一个与SWI Prolog的连接,想要操纵事实。e、 收回并维护它们

我有一些类似这样的功能:

       String[] param = { "-q" };
       PlEngine.Initialize(param);
            PlQuery.PlCall("consult('tablets.pl').");

            PlQuery.PlCall("assert(tablet(4,newatomic)).");
            PlQuery.PlCall("tell('tablets.pl'), listing(tablet/2), told.");
            PlQuery.PlCall("retractall(tablet/2).");
            PlQuery.PlCall("assert(tablet(1,n1ewatomic)).");
            PlQuery.PlCall("assert(tablet(2,n2ewatomic)).");
            PlQuery.PlCall("tell('tablets.pl'), listing(tablet/2), told.");
正如您所看到的,这个函数按预期用于断言,但不用于收回。问题是,在插入下一个事实之前,我想从文件中删除所有平板电脑事实(它们是动态的)<代码>PlQuery.PlCall(“retractall(tablet/2)”此查询必须删除文件中的所有记录。以及如何删除一个事实,例如
tablet(4,newatomic)
,但不删除另一个事实

执行后生成的文件是:

:- dynamic tablet/2.

tablet(4, newatomic).
tablet(1, n1ewatomic).
tablet(2, n2ewatomic).

嗯,我不想删除一个问题,因为它得到了两张赞成票。也许它对某人有用

因此,逻辑是正确的

每当我们想将某些内容附加到数据库时,我们都会写:

assert(predicat(var1, var2, ... , varn))
retract(predicat(var1, var2, ... , varn))
retractall(predicat(var1, var2, ... , varn))
每当我们想从数据库中删除某些内容时,我们会写:

assert(predicat(var1, var2, ... , varn))
retract(predicat(var1, var2, ... , varn))
retractall(predicat(var1, var2, ... , varn))
如果所有条件都相等,则从db中删除它(也必须是动态的)

如果我们想删除所有数据,我们需要通过变量指定它。所以

retract(predicat(_,_,...,_))
retractall(predicat(_,_,...,_))
将删除与查询匹配的所有数据。为了保存数据,我们只需写下:

tell('database_file.txt'), %opening file for writing
listing(ig_node), %writing
told. %closing/saving file