如何将动态谓词的更改永久保存到.pl 文件? (Tau-Prolog)
How to permanently save changes of dynamic predicates to .pl file? (Tau-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
Tau Prolog 没有保存会话的方法。您应该手动保存所有事实,并在每次加载页面时查阅它们。
Session
原型中的 toString
方法生成 Prolog 程序的文本表示,其中包含已加载到会话中的所有子句和模块。您可以将此文本发送到您的服务器并将其写入文件。
要从外部文件加载程序,您可以向您的服务器发送一个异步请求以获取它的内容。然后,您可以使用 consult
方法加载程序。
问题 - 断言的动态谓词不会永久保存,在创建新会话后它们会丢失。如何永久保存?
我正在使用
Tau Prolog:JavaScript.
我正在从 在 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
Tau Prolog 没有保存会话的方法。您应该手动保存所有事实,并在每次加载页面时查阅它们。
Session
原型中的 toString
方法生成 Prolog 程序的文本表示,其中包含已加载到会话中的所有子句和模块。您可以将此文本发送到您的服务器并将其写入文件。
要从外部文件加载程序,您可以向您的服务器发送一个异步请求以获取它的内容。然后,您可以使用 consult
方法加载程序。