我有一个小问题。我得到了一个 Prolog 查询,它“返回”我想要的值,但作为第二个值,我希望它返回 true 或 false。我的其他查询都可以正常工作,但这个不行。
这就是我得到的:
queryA(T).
T = [..].
这就是我需要的:
queryA(T).
T = [..];
false/true.
我希望你能帮助我。谢谢!
编辑:
Prolog代码:在知识库中查找所有特征结构记录(在prolog中表示为列表[attribute:value,attribute:value,...]),并“返回”大于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
是普通字符串还是列表?