标签: tau-prolog

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

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

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

我正在从 html 文件加载 prolog 代码,因为我还没有成功从外部 pl 文件加载它。

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

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

    //var query ="consult('baza.pl').";
    //session.query( query );
    //also consults this way
}
Run Code Online (Sandbox Code Playgroud)

然后我稍后查询同一会话并使用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
Run Code Online (Sandbox Code Playgroud)

prolog tau-prolog

5
推荐指数
1
解决办法
588
查看次数

Tau-Prolog 解释器表现出与 SWI-Prolog 不同的行为

我目前正在尝试在 Tau-Prolog 中实现一些基本的 Prolog 查询。虽然我在 SWI-Prolog 中有工作查询,但我无法实现它们以在 Tau-Prolog 中工作。我想返回数据库中具有接口“B”的所有机器人的名称。我在这里缺少什么重要的东西吗?我认为 sub_string/5 可能是它不起作用的原因。当我将代码粘贴到http://tau-prolog.org/上的试用解释器中时,它也不起作用

有谁知道如何修复此查询,以便它可以在 Tau-Prolog 中工作?提前致谢!

<script>
var session = pl.create(1000)
var database =  `

    robot('Roboter1','A', 1, 550).
    robot('Roboter2','C', 2, 340).
    robot('Roboter3','B', 2, 430).
    robot('Roboter4','A', 2, 200).
    robot('Roboter5','B', 3, 260).



    `   
function start_query_RwB(){
  query_RwB();
}

function query_RwB(){

  var queryRwB = "queryRwB :-write('Interface B has: '),robot(Name, Interface,_,_),sub_string(Interface,_,_,_,'B'),write(Name),nl, fail."

  var code_pl = database.concat(queryRwB);
  var parsed = session.consult(code_pl)
  var query = session.query('queryRwB.')

  function inform(msg) {
    show_result4.innerHTML += msg
  }
  session.current_output.stream.put = inform;
  var …
Run Code Online (Sandbox Code Playgroud)

javascript prolog tau-prolog

2
推荐指数
1
解决办法
305
查看次数

标签 统计

prolog ×2

tau-prolog ×2

javascript ×1