0

少し問題が発生しました。必要な値を「返す」Prologクエリを取得しましたが、2番目の値として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

4

0 に答える 0