2011-04-10 23 views

回答

-1

您是否在尋找水木清華般

list(N, List) :- 
    numlist(1, N, List). 

這使得

?- list(5, L). 
L = [1, 2, 3, 4, 5]. 

還是什麼?

UPD:

kal(N, Lists) :- govna(N, [[]], [_ | Lists]), !. 
govna(0, Ans, Ans). 
govna(N, List, Com) :- 
    numlist(1, 10, X), 
    append(List, [X], ListNew), 
    NewN is N - 1, 
    govna(NewN, ListNew, Com). 

是這個嗎?

?- kal(2, X). 
X = [[1, 2, 3, 4, 5, 6, 7, 8|...], [1, 2, 3, 4, 5, 6, 7|...]]. 
+0

它不喜歡的是,我要實現類似的功能:列表= [S1, S2,S3,S4],List :: 1..10。它會動態地創建列表並設置他的域名,我需要爲每個項目添加前綴:( – funlive 2011-04-10 18:25:45

+0

函數必須接受一個參數併產生結果?你的情況下的參數和結果是什麼? – 2011-04-10 18:41:01

+0

例如:%pass列表長度N,%創建列表L的長度爲N,%設置域L :: 1..10,%將該列表傳遞給另一個函數 – funlive 2011-04-10 18:50:09

2

爲了使長度N的列表,使用length/2用變量作爲第一個參數:

1 ?- N=4, length(List,N). 
N = 4, 
List = [_G487, _G490, _G493, _G496].