:- ensure_loaded('set_flags.pro'). % range(M, N, L) expects M and N to be integers. % L will be bound to [M, M+1, ..., N] % If M > N, then L will be []. /* Examples * * ?- range(1, 10, L). * L = [1,2,3,4,5,6,7,8,9,10] * * ?- range(-10, 10, L). * L = [-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10] * * ?- range(0, 0, L). * L = [0] * * ?- range(1, 0, L). * L = [] */ range(M, N, []) :- M > N. range(M, N, [M | L]) :- M =< N, M1 is M+1, range(M1, N, L).