2012-10-19 126 views
1

我找不到使用Erlang庫函數創建一個由重複N次元素E組成的列表的方法。當然,這是一個很小寫,Erlang重複元素列表

repeat(E, N) -> 
    repeat(E, N, []). 
repeat(_E, 0, L) -> 
    L; 
repeat(E, N, L) -> 
    repeat(E, N-1, [E|L]). 

但我期望這是一個單線程使用一些列表模塊函數或什麼。有沒有辦法?

編輯:好了,有這門課程的,

lists:map(fun(_) -> E end, lists:seq(1, N)) 

而是創建一個立即丟棄一個額外的列表。看起來對我來說效率低下,但也許我沒有考慮Erlang的慣用。

編輯2:原來這是一個愚蠢的問題。我只是不知何故在列表模塊中沒有看到重複的函數。

回答

8

我覺得這是在二郎山功能可以做到這一點:

lists:duplicate(N,X). 

%% and repeat a string like this: 
repeat(X,N) -> 
    lists:flatten(lists:duplicate(N,X)). 
+0

嗯,爲什麼拉平?是不是重複我正在尋找什麼? – njlarsson

+0

對不起,我沒注意到。我想過一個重複的字符串方法。 – halfelf

2

列表理解將工作太:

> [E || _ <- lists:seq(1,N)].