0

我有一个小问题。我得到了一个 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是普通字符串还是列表?

4

0 回答 0