Пролог не "возвращает" истину или ложь
У меня есть небольшая проблема. Я получил запрос 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
нормальная строка или список?