tau-prolog не будет запускать код пролога, в котором я использую библиотеку CHR, хотя он работает на SWI-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, который я использую для запуска тау-пролога
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 ответ
Я думаю, у тебя мало шансов на успех с :-use_module(library(chr)).
, по крайней мере, если никто не портировал код с других более зрелых Прологов на TAU-Prolog
Но у Falco Nogatz есть Javascript-реализация CHR, которая может вам помочь.
На мой взгляд, Prolog и CHR перекрываются (ну, Prolog больше), поэтому использование другого хост-языка для ваших правил CHR может быть простым и удобным.