问题标签 [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 回答
458 浏览

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

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

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

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

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

然后我稍后查询同一个会话并使用 assertz 插入新的动态谓词。在我重新加载页面之前一切都很好(当新会话产生时,只有原始谓词但没有新谓词)。

我也试过

0 投票
1 回答
365 浏览

javascript - 在 Node.js 中使用 Tau-Prolog

下载 Tau-Prolog 后,我尝试运行 这个示例,但我被突然停止:

这是我目前的配置:

我怎样才能摆脱这个问题?


编辑

最新版本的系统似乎问题消失了。

0 投票
1 回答
375 浏览

javascript - 使用 Tau Prolog for Javascript 断言谓词

在那里,我已经尝试这个问题超过 2 天了,但没有任何东西可以显示。因此,希望能在这个问题上提供一些帮助。

问题:尝试使用 Tau Prolog for Javascript 断言新谓词会返回错误结果。使用 SWI-Prolog 时,完全相同的查询结果为 True。

该程序取自textareaHTML 页面中的一个。一切都仅在一台计算机上是本地的。

我尝试过:在 Prolog 中声明动态谓词。例如

asserta, assertz and assert调用查询时更改为,。

结果:在回调函数 show() 中,每当尝试断言时,总是会打印出 false。

{ref: 6065, id: "throw", args: Array(1), indicator: "throw/1"} 只要完成查询,就会打印出术语 chosen_meats(X).。但是,当使用 tostring 方法时,正常的谓词调用如在 session.query("breads(X)."); 处给出正确的输出 。"[parmesan,honeywheat]"

编辑:在线 Tau Prolog 给出了相同的问题 http://tau-prolog.org/ 错误已扩展为:

为了

0 投票
1 回答
158 浏览

javascript - Tau Prolog 的行为与沙盒不同

问题:在 Tau Prolog 在线解释器中完美运行的程序在本地计算机上执行时表现不同。[使用 HTML 和 Javascript]

错误已追溯到 Prolog 中使用的 if,else if, else 谓词(例如 (X->A;B->C;D) 尝试修复:使用 --> 而不是 ->,在圆括号中添加整个表达。

可能有帮助:导入列表库时,库的某些部分可以使用,而其他部分在本地计算机上运行时不能使用。具体来说,减法函数就是列表库。因此,怀疑从选择所有内容的 Tau Prolog 下载的 javascript 文件可能存在问题。虽然下面的代码片段不包含减法函数,但它会在提示问题的情况下出现。使用的编辑器:Visual Studio 代码。 http://tau-prolog.org/downloads

ask_main(X) 查询的预期输出:X = [chicken, tuna]. 当使用在线 Tau Prolog 解释器时,这是真的。但是,在 Javascript 上使用以下查询完成后,结果如下:

结果: Term {ref: 7051, id: "throw", args: Array(1), indicator: "throw/1"},

扩展时给出:

注:查询

在本地执行时打印出来[healthy, vegan, veggie, value],这是有效的。编辑:序言代码存在于 id=program 的 div 容器中。

0 投票
1 回答
295 浏览

javascript - Tau-Prolog 结果在浏览器窗口中可见

我对 Tau-Prolog 和 Javascript 还很陌生。一开始我想在浏览器中展示一些由 Tau-Prolog 引擎计算的结果。

到目前为止,我只想展示我的 Prolog 数据库中包含的一些信息:

  • 数据库中的所有机器人以及与夹具/传感器等连接的接口。

  • 数据库中的所有夹具/传感器以及连接到机器人的接口。

序言输出将类似于:“机器人 A 适合夹爪 C(相同的接口 Z)。” 我已经在 SWI-Prolog 中对此进行了编程,到目前为止它运行良好。

现在我想在 HTML 元素中显示结果:

这是我到目前为止提出的:

我可以在控制台中看到所有(正确的)结果,但我无法让它们在网站上可见。谢谢你的帮助!

编辑:

在@CapelliC 的帮助下,我现在想出了这个版本。我仍然有预期结果显示在控制台中的问题,但没有出现在网站上:

0 投票
1 回答
262 浏览

node.js - 将 Tau-Prolog 与 React 结合使用

我正在尝试将 Tau-Prolog 与 Node.js 和 React 一起使用。

在步骤:

我收到此错误消息:

这是重现该问题的代码:

index.js

谢谢你的帮助!

0 投票
1 回答
159 浏览

javascript - Tau-Prolog 解释器显示与 SWI-Prolog 不同的行为

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

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

0 投票
1 回答
134 浏览

javascript - 使用 await 和 async 在其他任何事情之前加载解析 Tau-Prolog

我的任务是在执行任何其他操作之前在浏览器中加载和解析 Tau-Prolog 代码。我尝试了这种方法(webProlog.pl 包含 Tau-Prolog 代码):

在“ init ”查询中有一条日志消息“ Tau-Prolog init done ”。如果我不使用 await/asnyc,则消息“ Prolog Init done ”出现Tau-Prolog 消息之前,上面的代码序列是正确的(第一个 Tau Prolog 消息,然后是 Prolog init done)。

问题是:我不是 JS 专家。这是否适用于所有常见的浏览器,这种方法是否有我看不到的副作用或缺点?有更好的解决方案吗?

整个代码将继续 PixiJS 的东西设置。

干杯,感谢任何提示

汉斯

0 投票
0 回答
58 浏览

node.js - 无法输出 tau prolog 答案的累积列表

我在我的项目中使用 Tau Prolog 库,在我尝试之前它一直运行良好。

我正在尝试输出多个时间表及其相应的额外时间(上下文与此处无关)。

这是我使用 session.answers( x => console.log( pl.format_answer(x) ) ) 时控制台中的输出

// 查询目标

session.query("getSchedules(123,Schedule,ExtraHours).");

// 显示答案

session.answers(x => console.log(pl.format_answer(x)));

安慰:


时间表 = [a, b, c, d, e, f, m, g], ExtraHours = 0 ;

时间表 = [a, b, c, d, e, f, j, k], ExtraHours = 0 ;

时间表= [a,b,c,d,e,f,j,x],ExtraHours = 0;

时间表= [a,b,c,d,e,f,j,g],ExtraHours = -2;

时间表= [a,b,c,d,e,f,k,x],ExtraHours = 0;

时间表 = [a, b, c, d, e, f, k, g], ExtraHours = -2 ;

时间表 = [a, b, c, d, e, f, x, g], ExtraHours = -2 ;

错误的。


我试图在 1 个列表中获取所有这些计划,但每当我尝试将结果累积到全局变量中时,结果列表只有第一个计划。有谁知道我怎样才能得到所有时间表的清单?

0 投票
1 回答
58 浏览

prolog - 将谓词应用于输入列表 Prolog

我想做的是:

给定一个字符列表,以了解哪个列表与它最矛盾,所以我将图像放在列表中[kraken,scorpia,zulrah],这样它就会检查每个字符的攻击类型,并且会看到每个字符最有效的攻击类型,我会收到3个老板的名单。