GNU Prolog Java не удается

Я пытаюсь использовать Prolog через Java с интерпретатором GNU, но у меня есть одна большая проблема.

Если сделать запрос к переменной, я всегда получаю имя переменной обратно.

Итак, вот некоторый код:

node(1,3,3).
node(2,14,1).
node(3,19,5).
node(4,10,7).
node(5,15,8).

connection(1,2).
connection(1,2).

connection(2,3).
connection(3,2).

connection(1,3).
connection(3,1).

connection(2,4).
connection(4,2).

connection(4,5).
connection(5,4).

connection(3,5).
connection(5,3).

connection(1,4).
connection(4,1).

route(ID1,ID2,List) :- route(ID1,ID2,List,[]).
route(ID1,ID2,[ID1,ID2],List) :- connection(ID1,ID2),
                          not(member(ID1,List)).
route(ID1,ID2,[ID1|ID1s],List) :-   connection(ID1,ID3),
                                not(member(ID1,List)),      
                                route(ID3,ID2,ID1s,[ID1|List]).

findPath(Sum,Result) :- route(1,1,Result),
                    X is Sum+1,
                    length(Result, X).

Этот код прекрасно работает в консоли GNU Prolog и с SWIPL, но в Java

    VariableTerm lengthTerm = new VariableTerm("Length");
    Term[] arg_list = {new IntegerTerm(5), lengthTerm };
    CompoundTerm(AtomTerm.get("findPath"), arg_list);
    CompoundTerm goalTerm = new CompoundTerm(AtomTerm.get("findPath"), arg_list);

    Goal goal = interpreter.prepareGoal(goalTerm);

    interpreter.runOnce(goalTerm);  
    System.out.println("Length: " + lengthTerm.dereference());      

Результатом для длины является "длина". Так что я думаю, что в памяти нет реального результата. Если я попробую что-то вроде if (rc == PrologCode.SUCCESS || rc == PrologCode.SUCCESS_LAST) и поймать исключение NoAnswerException, затем выдается исключение. Что я могу сделать? Я пытаюсь решить эту проблему с нескольких часов. Пожалуйста помогите:)

0 ответов

Другие вопросы по тегам