我有一个谓词,应该从列表中形成一个列表,只将这些数字放入一个新的列表中,这些列表在一定范围内。谓词起作用,但假设我想得到一个不包含边界的列表。 因此,我将条件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] .