Erlang中重复元素的列表

njl*_*son 1 erlang list

我找不到一种方法来使用Erlang库函数来创建一个由重复N次的元素E组成的列表.当然,写一个很简单,

repeat(E, N) ->
    repeat(E, N, []).
repeat(_E, 0, L) ->
    L;
repeat(E, N, L) ->
    repeat(E, N-1, [E|L]).
Run Code Online (Sandbox Code Playgroud)

但我希望这是一个单行使用一些列表模块功能或其他东西.有办法吗?

编辑:好的,这当然是,

lists:map(fun(_) -> E end, lists:seq(1, N))
Run Code Online (Sandbox Code Playgroud)

但这会创建一个立即丢弃的额外列表.对我来说似乎效率低下,但也许我并不认为Erlang是惯用的.

编辑2:原来这是一个愚蠢的问题.我只是在某种程度上没有看到列表模块中的重复功能.

hal*_*elf 9

我认为erlang中有一个函数可以做到:

lists:duplicate(N,X).

%% and repeat a string like this:
repeat(X,N) ->
    lists:flatten(lists:duplicate(N,X)).
Run Code Online (Sandbox Code Playgroud)