Пролог не "возвращает" истину или ложь

У меня есть небольшая проблема. Я получил запрос Prolog, который "возвращает" значение, которое я хочу, но затем в качестве второго значения я хочу, чтобы оно возвращало true или false. Все остальные мои запросы работают нормально, но этот не работает.

Вот что я получаю:

queryA(T).
T = [..].

это то что мне нужно:

queryA(T).
T = [..];
false/true.

Я надеюсь, что вы можете мне помочь. Спасибо!

Редактировать:

код Пролога: находит все записи структуры объектов (представленные в виде списков в прологе [атрибут: значение, атрибут: значение,...]) в базе знаний и "возвращает" наименьшую запись, которая больше, чем OldEvent или OldEvent если нет меньшего значения.

turnEventNotAlreadyUsed(Event, OldEvent) :-
    findall(R,
          (  fsr(R),
             type(R, turnEvent)
           ),
            List),
    list_min(List,OldEvent, Event).

если нет OldEvent (OldEvent имеет значение: unknown), просто возьмите последнюю запись структуры объектов.

list_min([X], _, X).       % X is min for single list, [X]
list_min(X,OldEvent,MinFSR):-           
   OldEvent = "unknown",
   latest(MinFSR, X),
   !.

%   [...]

latest(R, [R]) :- !.
latest(R, [H|T]) :-
   latest(L, T),
   (  after(L, H), !, R = L
   ;  after(H, L), !, R = H
   ).

Я не доволенOldEvent = "unknown" либо, как я могу проверить, OldEvent нормальная строка или список?

0 ответов

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