pl = {
const pl = await require("tau-prolog@0.2").catch(() => window.pl);
class QueryIterator {
constructor(session) {
this._session = session;
this._callback = x => this._value = x;
}
[Symbol.iterator]() {
return this;
}
next() {
this._session.answer(this._callback);
return this._value ? {done: false, value: this._value} : {done: true};
}
}
class Program {
constructor(source) {
this._session = pl.create();
this._session.consult(source);
}
query(source) {
this._session.query(source);
return new QueryIterator(this._session);
}
}
return function() {
return new Program(String.raw.apply(String, arguments));
};
}