gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:35:25 25 4
gpt4 key购买 nike

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

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

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

:-use_module(library(lists)).
memberchk(X,[X|_]) :- !.
memberchk(X,[_|T]):- memberchk(X,T).
subtract([], _, []).
subtract([Head|Tail], L2, L3) :-
memberchk(Head, L2),
!,
subtract(Tail, L2, L3).
subtract([Head|Tail1], L2, [Head|Tail3]) :-
subtract(Tail1, L2, Tail3).
main([chicken, tuna]).
meals([healthy,vegan,veggie,value]).
:-dynamic(chosen_main/1).
:-dynamic(chosen_meals/1).
chosen_main([]).
chosen_meals([]).
ask_meals(X):-
meals(X).
ask_main(X):-chosen_meals([vegan])->X = [nothing];
chosen_meals([veggie])->X = [nothing];
main(X).

ask_main(X) 查询的预期输出:X = [鸡肉,金枪鱼]。使用在线 Tau Prolog 解释器时确实如此。但是,在 Javascript 上使用以下查询时,结果如下:

    var session = pl.create(1000);
var program = document.getElementById("program").innerHTML;
session.consult(program);
console.log("ask_main(X).");
session.query("ask_main(X).");
session.answers(showResults(), 1000);

结果: 术语 {ref: 7051, id: "throw", args: Array(1), Indicator: "throw/1"},

展开后给出:

args: (2) [Term, Term]
id: "existence_error"
indicator: "existence_error/2"
ref: 7047

注意:查询

session.query("ask_meals(X).");
session.answers(showResults(), 1000);

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

最佳答案

如果#program 是文本区域,则必须使用.value 属性获取HTML 元素的值,而不是.innerHTML。使用 .innerHTML 属性,您将加载一个空程序。

var session = pl.create(1000);
var program = document.getElementById("program").value;
session.consult(program);
session.query("ask_main(X).");
session.answers(x => console.log(pl.format_answer(x)), 1000);

关于javascript - Tau Prolog 的行为与沙箱不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58762782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com