tau-prolog не запускает код пролога, в котором я использую библиотеку CHR, хотя он работает на SWI-Prolog - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь использовать tau-prolog для запуска кода CHR, и он дает эту ошибку throw(error(existence_error(procedure, '/'(color, 1)), '/'(top_level, 0))), хотя он отлично работает на SWI-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).

это запрос, который я выполняю color(yellow),color(red).

это код js, который я использую для запуска tau-prolog

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;
});

1 Ответ

2 голосов
/ 30 мая 2020

Я думаю, у вас мало шансов на успех с :-use_module(library(chr))., по крайней мере, если никто не портировал код из других более зрелых Прологов в TAU-Prolog

Но у Falco Nogatz есть реализация Javascript из CHR , которые могут вам помочь.

Насколько я понимаю, Prolog и CHR перекрываются (ну, Prolog больше), поэтому использование другого хост-языка для ваших правил CHR может быть простым и удобным.

...