问题标签 [tau-prolog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
129 浏览

javascript - tau-prolog 不会运行我使用 CHR 库的 prolog 代码,尽管它适用于 SWI-Prolog

我正在尝试使用 Tau Prolog 运行 CHR 代码,它给出了这个错误:

虽然它在 SWI Prolog 上运行良好。

这是序言代码:

这是我运行的查询:

这是我用来运行 Tau Prolog 的 JS 代码:

0 投票
0 回答
78 浏览

javascript - JavaScript 和 Tau Prolog 中的回调问题——绑定在多个查询中为空

设置

我正在尝试设置一个简单的前端来显示来自 Tau Prolog 知识库的数据。现在,我有一个 JS 文件,它使用回调来进行 Prolog 查询并获得答案,输出数据库中所有字符和位置的列表:(您可以忽略过滤字符串的东西,它用于搜索实现,但被初始化''为现在将显示整个列表)

phandelver-prolog.js

这是一个示例 Prolog 文件:

phandelver.prolog

以及 index.html 的相关部分(捆绑只是一个 browserify 导入):

索引.html

问题

如果我只是调用print_characters()print_locations()从内部调用,所有这些都可以正常工作phandelver-prolog.js,适当地输出字符列表或位置列表。当我尝试同时执行这两个函数调用时,问题就出现了。例如,将其放在 JS 文件的顶部:

phandelver-prolog.js

执行时在 JS 浏览器控制台中出现错误:

尽管列为 null 的变量的名称会根据我是运行print_characters()还是print_locations()先运行而变化。我认为该错误是 JavaScript 处理同步和回调方式的问题——不同的数据库查询相互干扰,并尝试使用第一个函数的绑定执行第二个函数的查询。

我试图通过使用回调调用print_characters()和来解决这个问题print_locations()

phandelver-prolog.js

但我仍然得到同样的错误。我还尝试使用 Mutex 一次调用一个函数(使用 browserify 导入所需的文件):

phandelver-prolog.js

但同样,得到同样的错误。请注意,如果我执行类似调用 print_characters() 之类的操作,然后为第二个函数再次调用 print_characters(),则回调和 Mutex 函数工作正常,两次打印出字符列表。因此,这很可能是由于调用两个不同的查询和 JavaScript 试图同时处理它们而导致的。

我的理解是回调或互斥锁应该处理这样的情况并防止在运行这些函数时发生冲突?print_characters()我认为如果 JS在运行之前完整地运行第一个调用,问题将得到解决print_locations(),但如果我理解正确,那应该是回调/互斥体中发生的事情。

对此的任何帮助将不胜感激!

0 投票
1 回答
80 浏览

javascript - Tau Prolog - 如何将 prolog 列表转换为 JavaScript 数组

我想按照本教程在节点服务器上使用 Tau Prolog 和 JavaScript ,效果很好。我需要将答案转换为与 JavaScript 兼容的格式,尤其是列表到数组或对象,反之亦然。

我以返回列表的方式更改了 Prolog 程序和目标

程序:test(t, [64,65,100,120]).

目标:test(t, X).

它返回

控制台也是如此。如何仅获取列表并将其分配给 js 变量?

我试过

这给了我

访问起来不是很舒服。该args数组似乎是列表。我设法获得了单个列表元素

获取第三个列表元素。
在 JavaScript 中使用复杂答案和列表的最佳方式是什么?

0 投票
0 回答
8 浏览

tau-prolog - 在运行时加载 tau-prolog.js-packages?

我正在使用 tau-prolog 为 Prolog 制作在线 IDE,并且我需要能够以 js-form 导入外部 tau-prolog 模块包,因此我可以在已定义的模块中使用谓词。

我对此有点麻烦,而且我的行为令人困惑。

有什么推荐的方法吗?

现在,我通过 AJAX 将 js 包作为文本获取,然后对它们进行 eval 以将该 js 代码带入内存(是的,我知道 eval 有缺点,但对于初学者来说,我正在尝试这种方法)。- 有时它工作得很好,有时却不行,这就是我这样伸出援手的原因:-)

0 投票
1 回答
26 浏览

prolog - 教程示例中的 tau prolog exists_error

我正在关注tau-prolog教程,但遇到了这个错误:

我的 index.html 是

main.js 是

控制台输出是

这里

我不知道从哪里开始,如果有人指出我犯的初学者错误,我将不胜感激!

*** 更新

如果我将session.consult使用"and更改\为使用新的 `` 模板字符串语法,则此代码有效!

新会话。咨询:

所以的问题是:“为什么会有不同?”

再次感谢!