问题标签 [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.
prolog - 如何将动态谓词的更改永久保存到 .pl 文件?(Tau 序言)
问题 - 断言的动态谓词不会永久保存,在创建新会话后它们丢失了。如何永久保存它们?
我正在使用
Tau Prolog:JavaScript 中的 Prolog 解释器。
我正在从 html 文件中加载 prolog 代码,因为我没有成功从外部 pl 文件中加载它。
在 .js 文件中,我使用以下代码:
然后我稍后查询同一个会话并使用 assertz 插入新的动态谓词。在我重新加载页面之前一切都很好(当新会话产生时,只有原始谓词但没有新谓词)。
我也试过
javascript - 使用 Tau Prolog for Javascript 断言谓词
在那里,我已经尝试这个问题超过 2 天了,但没有任何东西可以显示。因此,希望能在这个问题上提供一些帮助。
问题:尝试使用 Tau Prolog for Javascript 断言新谓词会返回错误结果。使用 SWI-Prolog 时,完全相同的查询结果为 True。
该程序取自textarea
HTML 页面中的一个。一切都仅在一台计算机上是本地的。
我尝试过:在 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/ 错误已扩展为:
为了
和
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 容器中。
javascript - Tau-Prolog 结果在浏览器窗口中可见
我对 Tau-Prolog 和 Javascript 还很陌生。一开始我想在浏览器中展示一些由 Tau-Prolog 引擎计算的结果。
到目前为止,我只想展示我的 Prolog 数据库中包含的一些信息:
数据库中的所有机器人以及与夹具/传感器等连接的接口。
数据库中的所有夹具/传感器以及连接到机器人的接口。
序言输出将类似于:“机器人 A 适合夹爪 C(相同的接口 Z)。” 我已经在 SWI-Prolog 中对此进行了编程,到目前为止它运行良好。
现在我想在 HTML 元素中显示结果:
这是我到目前为止提出的:
我可以在控制台中看到所有(正确的)结果,但我无法让它们在网站上可见。谢谢你的帮助!
编辑:
在@CapelliC 的帮助下,我现在想出了这个版本。我仍然有预期结果显示在控制台中的问题,但没有出现在网站上:
node.js - 将 Tau-Prolog 与 React 结合使用
我正在尝试将 Tau-Prolog 与 Node.js 和 React 一起使用。
在步骤:
我收到此错误消息:
这是重现该问题的代码:
index.js
谢谢你的帮助!
javascript - Tau-Prolog 解释器显示与 SWI-Prolog 不同的行为
我目前正在尝试在 Tau-Prolog 中实现一些基本的 Prolog 查询。尽管我在 SWI-Prolog 中有工作查询,但我无法实现它们以在 Tau-Prolog 中工作。我想返回数据库中所有具有接口“B”的机器人的名称。我在这里遗漏了什么重要的东西吗?我认为 sub_string/5 可能是它不起作用的原因。当我将代码粘贴到http://tau-prolog.org/上的试用解释器时,它也不起作用
有谁知道修复此查询的方法,以便它可以在 Tau-Prolog 中工作?提前致谢!
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 的东西设置。
干杯,感谢任何提示
汉斯
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 个列表中获取所有这些计划,但每当我尝试将结果累积到全局变量中时,结果列表只有第一个计划。有谁知道我怎样才能得到所有时间表的清单?
prolog - 将谓词应用于输入列表 Prolog
我想做的是:
给定一个字符列表,以了解哪个列表与它最矛盾,所以我将图像放在列表中[kraken,scorpia,zulrah]
,这样它就会检查每个字符的攻击类型,并且会看到每个字符最有效的攻击类型,我会收到3个老板的名单。