我有一個謂詞,應該從列表中形成一個列表,只將這些數字放入一個新的列表中,這些列表在一定範圍內。謂詞起作用,但假設我想得到一個不包含邊界的列表。 因此,我將條件A >= L, A =< R
更改爲A > L, A < R
,但後來我只獲得「True」,而Prolog則不輸出任何內容。在一定範圍內的列表
這裏有什麼問題?
我的代碼是:
range([], _, _, []).
range([A|L1], L, R, [A|L2]) :-
A>L,
A<R,
range(L1, L, R, L2).
range([A|L1], L, R, L2) :-
A=<L;
A>=R,
range(L1, L, R, L2).
這是程序的輸出:
range([1,2,3,4,5], 1,4, X).
?- range([1,2,3,4,5,6,7,8,9,10], 1,3, X).
true .
這就是我希望它輸出:
?- range([1,2,3,4,5,6,7,8], 1, 5, X).
X = [2,3,4] .