私はいくつかのPrologコードのテストを書いて、 "Test succeeded with choicepoint"という警告を出しました。ここに私のテストの一つだ:ノンセットで範囲を指定する方法(PLユニットテストの選択肢を避けるため)
test(overlap_intervals):-
overlap_intervals([0, 10], [5, 15]).
はここのコードです:
%% precondition: X1<Y1 and X2<Y2
overlap_intervals([X1,Y1], [X2,Y2]):-
(X1<X2, Y1<Y2, Y1>X2); !,
(X1>X2, Y1>Y2, Y1<X2).
私のような私が選択のポイントを避けるために、「nondet」test(foo, nondet) :- ....
を使用することができ、他のポストから見た:
test(member, all(X == [a,b,c])) :-
member(X, [a,b,c]). % quoting Prolog document
しかし、私は私の場合の間隔を扱っています。 「ノンセット」は、徹底的なリストではなく、数字の範囲になります。 (これは明らかに動作しませんが、私の目標は全体の取得を)例えば:
test(overlap_intervals, all(Y<10, Y>0)):-
overlap_intervals([0, 10], [Y, 15]).
は、誰かがchoicepointsがあり、どのように私の場合には、それらを避けるために理由を説明することはできますか?
ありがとう、イザベル! ';'と '、'を切り替えて問題を解決しました。 'すべて((0、10、Y)の間に)'は残念ながら動作しませんが問題ではありません。 – vw511