Мне было интересно, удалось ли кому-нибудь использовать «листинг». команда в JPL для проверки содержимого базы знаний Prolog? JPL требует, чтобы вы строили запросы и возвращали решения на основе переменных, которые вы указали в запросе. Например (Java):
Query q = new Query("holdsAt((X,Y) = true, 3)");
while ( q.hasMoreSolutions() ){
Hashtable s = q.nextSolution();
System.out.println(s.get("X")+", "+s.get("Y"));
}
Я не вижу, как это будет работать для листинга / 0 или даже для листинга / 1, который требует инстанцированного ввода. Сейчас я играю с кодом вида
predicate_property(L,interpreted),
\+ predicate_property(L, built_in),
\+ predicate_property(L,imported_from(_)),
current_predicate( X, L), current_predicate(X/Z).
, который возвращает функцию, существующую в базе знаний:
myFunction:-
myGoal1,
myGoal2.
ответ:
L = myFunction(_G403,_G404),
X = myFunction,
Z = 2
Но этого недостаточно, поскольку ни одна из целей не возвращается. Я полагаю, что мне нужно (если функция листинга не может быть вызвана с использованием JPL), это функция, которая возвращает в качестве переменной заголовок предиката вместе со списком соответствующих целей, которые должны быть выполнены. К сожалению, я не знаком с внутренностями функции листинга, поэтому не знаю, как это сделать.
Заранее спасибо