少し問題が発生しました。必要な値を「返す」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