如何将动态谓词的更改永久保存到.pl文件? (Tau-Prolog)

时间:2019-02-05 18:57:22

标签: prolog

问题-断言的动态谓词在创建新会话后不会永久保存。如何永久保存它们?

我正在使用
Tau Prolog:JavaScript中的Prolog解释器。

我正在从中加载序言代码  在html文件中,因为我尚未成功从外部pl文件加载它。

在.js文件中,我使用以下代码:

session = pl.create();
if(session){
session.consult( "baza.pl" );

    //var query ="consult('baza.pl').";
    //session.query( query );
    //also consults this way
}

然后,我稍后查询同一会话,并使用assertz插入新的动态谓词。一切正常,直到我重新加载页面(当新会话使只有原始谓词而没有新谓词时)。

我也尝试过

session.consult( "baza.pl" );
// consulting prolog code from external file but never succeeded.
var query ="load_dyn('baza.pl')"; 
//loads from internal script tag but not from external file 
var query =":- use_module('baza.pl')."; 
// I think this didn't succeed anyway

1 个答案:

答案 0 :(得分:2)

Tau Prolog没有保存会话的方法。您应该手动保存所有事实,并在每次加载页面时查阅。

toString原型中的Session方法生成Prolog程序的文本表示形式,其中包含已加载到会话中的所有子句和模块。您可以将此文本发送到服务器,然后将其写入文件。

要从外部文件加载程序,可以向服务器发送异步请求以获取其内容。然后,您可以使用consult方法加载程序。