Javascript 头·普洛格赢得';t运行我在其中使用CHR库的prolog代码,尽管它在SWI prolog上工作

Javascript 头·普洛格赢得';t运行我在其中使用CHR库的prolog代码,尽管它在SWI prolog上工作,javascript,prolog,constraint-handling-rules,tau-prolog,Javascript,Prolog,Constraint Handling Rules,Tau Prolog,我试图使用tau prolog运行CHR代码,它给出了这个错误throw(错误(存在错误(过程“/”(颜色,1)),“/”(顶层,0))) 尽管它在SWI Prolog上运行良好 这是prolog代码 :-use_module(library(chr)). :- chr_constraint(color/1). color(X), color(Y) <=> mix(X,Y,Z) | color(Z). color(brown) \ color(_) <=> true

我试图使用tau prolog运行CHR代码,它给出了这个错误
throw(错误(存在错误(过程“/”(颜色,1)),“/”(顶层,0)))
尽管它在SWI Prolog上运行良好

这是prolog代码

:-use_module(library(chr)).

:- chr_constraint(color/1).

color(X), color(Y) <=> mix(X,Y,Z) | color(Z).

color(brown) \ color(_) <=> true.

mix(red,blue,purple).
mix(blue,yellow,green).
mix(yellow,red,orange).

我认为您使用
成功的机会很小:-使用_模块(库(chr))。
,至少如果没有人将其他更成熟的Prolog中的代码移植到TAU Prolog中

但是法尔科·诺加茨有一个可以帮助你的方法


在我看来,Prolog和CHR是重叠的(好吧,Prolog更大),因此为您的CHR规则使用不同的主机语言可能会更简单方便。

我认为您使用
:-使用_模块(库(CHR))。
,至少如果没有人将代码从其他更成熟的Prolog移植到TAU Prolog

但是法尔科·诺加茨有一个可以帮助你的方法


在我看来,Prolog和CHR是重叠的(好吧,Prolog更大),因此为您的CHR规则使用不同的主机语言可能会更简单、更方便。

@PauloMoura:事实上,如果我现在有时间,我想尝试一下这个答案中的集成。。。每次我深入研究Javascript时,它都会让我更加着迷。非常感谢,我现在就尝试使用它。我不知道CHR有一个直接的实现。@PauloMoura:事实上,如果我现在有时间,我想尝试一下这个答案中的集成。。。每次我深入研究Javascript时,它都会让我更加着迷。非常感谢,我现在就尝试使用它。不知道有一个直接用于CHR的实现。
let res2 = "";
let callbackStr = true;
function postQuery(str) {
  res2 += str + "\n";
  if (str == false)
    callbackStr = false;
}

router.post("/runQuery", async (req, res) => {
  res2 = "";
  let session = pl.create();
  let call = postQuery;
  let query = req.body.sentQuery;
  session.consult(req.body.codeString);
  session.query(query);
  while (callbackStr == true) {
    session.answer(call);
  }
  res.send(res2);
  res2 = "";
  callbackStr = true;
});