Prolog创建一个列表

xKa*_*elX 4 list prolog insert-update

我必须创建n个元素的列表,例如,

do_list(5,L1).
Run Code Online (Sandbox Code Playgroud)

应该回来,

L1=[1,2,3,4,5].
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,但它不起作用.

do_list(X,L1):- X1 is X-1, do_list(X1,[X1|L1]).

do_list(0,[]).
Run Code Online (Sandbox Code Playgroud)

gus*_*bro 8

如果要创建从1到N的连续数字列表,可以使用内置谓词findall/3,between/3这样:

do_list(N, L):- 
  findall(Num, between(1, N, Num), L).

?- do_list(5,L).
L = [1, 2, 3, 4, 5].
Run Code Online (Sandbox Code Playgroud)

SWI还有另一个内置功能就是这样,numlist/3:

?- numlist(1,5,L).
L = [1, 2, 3, 4, 5].
Run Code Online (Sandbox Code Playgroud)